首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与phpunit的集成测试:如何提示用户输入?

与phpunit的集成测试:如何提示用户输入?
EN

Stack Overflow用户
提问于 2015-03-16 16:31:24
回答 1查看 1.8K关注 0票数 2

我已经为 API编写了用phpunit测试的RESTful单元。

现在,我想使用phpunit进行进一步的集成测试,。由于这些都要慢得多,所以我构建了一个特殊的测试套件“集成”,必须显式地调用它。因此,单元测试可以经常运行并保持快速。

bootstrap.php集成测试套件执行数据库转储和种子。集成测试非常慢,因此它们不会像单元测试那样经常被调用。它们只会由人类来管理。

为了防止意外删除本地开发数据库,我希望testscript在转储数据库之前提示确认。只有在确认后,数据库才会被删除并重新播种。

  1. 在phpunit测试中可以提示输入吗?
  2. 一个提示是否损害了“集成测试的设计原则”?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-17 13:01:04

为了防止意外删除本地开发数据库,我希望testscript在转储数据库之前提示确认。只有在确认后,数据库才会被删除并重新播种。

基本提示符可以如下所示:

代码语言:javascript
复制
<?php

echo "Are you sure you want to drop the database?\n";
echo "Type 'yes' or 'y' to continue: ";

$handle = fopen("php://stdin","r"); // read from STDIN
$line = trim(fgets($handle));

if($line !== 'yes' && $line !== 'y'){
    echo "Execution stop.\n";
    exit;
}

echo "\n Continuing execution: dropping database.\n";

在phpunit测试中可以提示输入吗?

是的,这是可能的-但是小心可能的超时。

一个提示是否损害了“集成测试的设计原则”?

在测试期间,用户数据提示符(“数据输入提示”)将表明真正的自动化状态很糟糕。这表明您的测试还没有准备好运行完全自动化。

此提示在测试设置或引导阶段是“意外保护”,并且在装箱或孤立的测试环境中不需要它。

最好努力实现完全的测试自动化,并使用持续集成服务器来运行您的功能测试和集成测试。(就像@halfer之前指出的那样。)

请记住,您还可以检测到测试运行的环境。当您在CI服务器上时,只需跳过提示。

嗯,有某种“测试模式”或“最佳实践”。

  • 像(子)分组您的TestSuites,以加快它与parallel的执行。
  • 避免“只由人类运行”测试执行!更好的是:“运行完全自动化”和/或“在十分之一的测试运行中自动运行”。
  • 测试中的数据提示是“测试运行存储库”。
  • 基于env或常量并在测试引导期间触发的提示符是可以的。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29082082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档