假设您编写了一个失败的测试来利用错误。您希望将其推送到上游,然后创建一个关于修复代码以便测试通过的故事。然而,运行所有测试的管道阻止了这种情况。
我想出了一个解决方案:将测试添加到一个组中,然后编辑
phpunit.xml
以排除该组,使管道跳过该测试。解决 bug 后,您只需从排除组中删除测试即可。
这里的一个问题是最后一步可能会被忘记。无论测试是否通过,管道都会通过。
我认为解决这个问题的方法是我们期望它失败,而不是排除测试。有没有一种方法可以配置
phpunit.xml
,使属于特定组的所有测试预计至少会失败一个断言?我查看了文档,但没有找到任何内容。注释也是如此。解决方案是如果有像 @expectToFail
这样的注释,但我也没有找到类似的东西。
也许反转测试不是正确的方法。但要写一个我想做的事情的简短摘要,而不假设任何最好的方法。
如果可能,我想在不更改测试代码的情况下执行此操作,例如手动将
assertFalse
更改为 assertTrue
。
您可以将测试标记为不完整(https://docs.phpunit.de/en/10.3/writing-tests-for-phpunit.html#incomplete-tests):
$this->markTestIncomplete(
'This test has not been implemented yet.',
);
测试将通过,但输出中会生成警告:
...
There was 1 incomplete test:
1) WorkInProgressTest::testSomething
This test has not been implemented yet.
/path/to/tests/WorkInProgressTest.php:12
OK, but there were issues!
Tests: 1, Assertions: 1, Incomplete: 1.