在PHPUnit中重新运行上次失败的测试
当其中一个测试失败时,您可以使用在PHPUnit中重新运行上次失败的测试,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,当其中一个测试失败时,您可以使用--stop on failure标志来中断单元测试 是否有任何快速方法可以告诉PHPUnit重新运行此失败的测试,而不是手动提供完整路径?查看--filtercli选项。您可以在和中找到一个示例 --滤器 仅运行名称与给定模式匹配的测试。模式可以是单个测试的名称,也可以是匹配多个测试名称的正则表达式 假设您的运行phpunit Tests/和Tests/Stuff/thatonestclasseach::testThisWorks失败: 你的选择是: phpun
--stop on failure
标志来中断单元测试
是否有任何快速方法可以告诉PHPUnit重新运行此失败的测试,而不是手动提供完整路径?查看--filter
cli选项。您可以在和中找到一个示例
--滤器
仅运行名称与给定模式匹配的测试。模式可以是单个测试的名称,也可以是匹配多个测试名称的正则表达式
假设您的运行phpunit Tests/
和Tests/Stuff/thatonestclasseach::testThisWorks
失败:
你的选择是:
phpunit——再次筛选一个测试类
及
phpunit——过滤测试ThisWorks
或者大多数其他字符串都有意义我发现实现它的方法相当简单,但需要实现日志记录。您可以将phpunit设置为登录到json文件。然后将phpunit命令更改为类似于:
cd /home/vagrant/tests && php -d auto_prepend_file=./tests-prepend.php /usr/local/bin/phpunit
它所做的是在执行phpunit之前自动预处理一个php文件。通过这种方式,我们可以捕获$argsv并自动向phpunit提供所需的filter命令
测试prepend.php
(确保修改json日志的文件路径)
,您可以缓存测试结果,然后按缺陷排序测试
在phpunit.xml中,启用cacheResults
:
如果不想编辑phpunit.xml,还可以使用--cache result
标志运行测试
缓存结果时,PHPUnit将在运行测试后创建一个.PHPUnit.result.cache
文件。确保将此文件添加到全局gitignore文件中
您可以这样运行测试,以首先运行以前失败的测试:
phpunit --order-by=defects --stop-on-failure
如果您为测试设置了phpunit.xml,那么我创建了一个简短的bash脚本,它将使用上次测试运行的phpunit日志记录,用包含失败测试的类填充这个--filter。只需阅读上面的评论。
phpunit --order-by=defects --stop-on-failure