我已经使用phpunit为RESTful API编写了单元测试。
现在我想使用phpunit进行进一步的集成测试。由于这些速度慢得多,我建立了一个特殊的测试套件,即集成"必须明确调用。因此,单元测试可以经常运行并保持快速。
集成 testsuite的bootstrap.php
执行数据库转储和种子设定。集成测试非常慢,因此不会像单元测试那样经常调用它们。它们只会由人类管理。
为了防止意外删除本地开发数据库,我希望testscript在转储数据库之前提示确认。只有在确认后才会删除并重新播种数据库。
谢谢。
答案 0 :(得分:3)
为了防止意外删除本地开发数据库,我希望testscript在转储数据库之前提示确认。只有在确认后才会删除并重新播种数据库。
基本提示可能如下所示:
<?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测试中提示输入?
是的,这是可能的 - 但要注意可能的超时。
提示是否会损害任何“集成测试的设计原则”?
在测试期间提示用户数据(“数据输入提示”)将指示真正糟糕的自动化状态。这表明您的测试不准备完全自动化运行。
在测试设置或自举阶段,此提示是“事故保护”,在盒装或隔离的测试环境中不需要它。
最好是努力实现完整的测试自动化,并使用Continuous Integration服务器来运行功能和集成测试。 (就像@halfer之前指出的那样。)
请记住,您还可以检测测试运行的环境。 当您在CI服务器上时,只需跳过提示即可。
嗯,有一些“测试模式”或“最佳实践”。
parallel
执行时加快速度。