如何从PHPUnit上次失败的位置继续执行单元测试?
PHPUnit 从指定测试开始执行的解决方案
方法一:使用 --start-at-test-number 参数(PHPUnit 9.3+ 适用)
这是最直接的方案,PHPUnit 9.3及以上版本支持通过测试编号指定起始执行位置:
- 先确认你的PHPUnit版本:
php ./vendor/bin/phpunit --version - 执行从第451个测试开始的所有测试:
php ./vendor/bin/phpunit -c ./phpunit.xml --start-at-test-number 451
方法二:针对低版本PHPUnit(低于9.3)
如果你的PHPUnit版本不支持--start-at-test-number,可以先列出所有测试的顺序和标识,再用--filter定位起始点:
- 列出所有测试的完整列表及顺序:
php ./vendor/bin/phpunit -c ./phpunit.xml --list-tests - 在输出中找到第451个测试的类名或方法名,比如假设是
App\Tests\PaymentTest::testRefund,然后执行从该测试开始的所有内容:
注:正则表达式会匹配该测试类下的所有测试,以及后续按默认顺序排列的测试类php ./vendor/bin/phpunit -c ./phpunit.xml --filter '/^App\\Tests\\PaymentTest.*/'
补充说明
- 测试编号是PHPUnit按默认执行顺序生成的,和你之前运行测试时的输出顺序一致
- 如果只是想单独运行修复后的那个测试,可以直接指定测试方法:
php ./vendor/bin/phpunit -c ./phpunit.xml --filter 'App\Tests\PaymentTest::testRefund'
内容的提问来源于stack exchange,提问作者Hamed Kamrava
相关产品推荐
相关产品推荐

