如何使 PHPUnit 在有风险的测试中失败

How to make PHPUnit fail on risky tests

如果一项或多项测试被认为有风险,我希望 PHPUnit 失败。实际上:

PHPUnit 5.3.4 by Sebastian Bergmann and contributors.

..RRR..                                                         7 / 7 (100%)

Time: 2.83 seconds, Memory: 26.00Mb

OK, but incomplete, skipped, or risky tests!
Tests: 7, Assertions: 137, Risky: 3.

上面写着"OK, but incomplete",所以我的测试没有失败(并且可以在连续交付的情况下发货)。有什么方法可以达到 "fail" 状态吗?我希望我的测试全局状态在风险测试中被视为失败,不知道是否可行。

有一个 --stop-on-risky 选项可以从命令行启用或在 phpunit.xml 中配置。

问题在于 运行 进程不会执行所有测试。我不知道将风险测试视为失败的直接方法。

你想要获得的行为被提出但没有被接受,所以不要指望被实施:

https://github.com/sebastianbergmann/phpunit/issues/1612

您可以在调用 PHPUnit 可执行文件时使用 --fail-on-risky 标志,或者将 failOnRisky="true" 属性设置为 phpunit.xml.

中的 <phpunit> 元素

--stop-on-risky/stopOnRisky="true"相反,这不会在 PHPUnit 遇到有风险的测试时停止测试套件,但会使 PHPUnit 以非零状态代码退出,就像它会当其中一项测试失败时。