在执行测试时,PHPUnit 可以进行一些额外的检查。除了细粒度地控制各种严格模式下的检查(见下文)外,还可以使用命令行选项 --strict
或在 PHPUnit 的 XML 配置文件中设置 strict="true"
来将它们全部启用。
PHPUnit 可以对事实上不测试任何内容的测试更加严格。此项检查可以用命令行选项 --report-useless-tests
或在 PHPUnit 的 XML 配置文件中设置 beStrictAboutTestsThatDoNotTestAnything="true"
来启用。
在启用本项检查后,如果某个测试未进行任何断言,它将被标记为有风险。仿件对象中的预期和诸如 @expectedException
这样的标注同样视为断言。
PHPUnit 可以对意外覆盖的代码更加严格。此项检查可以用命令行选项 --strict-coverage
或在 PHPUnit 的 XML 配置文件中设置 checkForUnintentionallyCoveredCode="true"
来启用。
在启用本项检查后,如果某个带有 @covers
标注的测试执行了未在 @covers
或 @uses
标注中列出的代码,它将被标记为有风险。
PHPUnit 可以对测试执行期间产生的输出更加严格。此项检查可以用命令行选项 --disallow-test-output
或在 PHPUnit 的 XML 配置文件中设置 beStrictAboutOutputDuringTests="true"
来启用。
在启用本项检查后,如果某个测试产生了输出,例如,在测试代码或被测代码中调用了 print
,它将被标记为有风险。
如果安装了 PHP_Invoker
包并且 pcntl
扩展可用,那么可以对测试的执行时长进行限制。此时间限制可以用命令行选项 --enforce-time-limit
或在 PHPUnit 的 XML 配置文件中设置 beStrictAboutTestSize="true"
来启用。
带有 @large
标注的测试如果执行时间超过60秒将视为失败。此超时限制可以通过XML配置文件中的 timeoutForLargeTests
属性进行配置。
带有 @medium
标注的测试如果执行时间超过10秒将视为失败。此超时限制可以通过XML配置文件中的 timeoutForMediumTests
属性进行配置。
没有 @large
或 @medium
标注的测试都将视同为带有 @small
标注,这类测试如果执行时间超过1秒将视为失败。此超时限制可以通过XML配置文件中的 timeoutForSmallTests
属性进行配置。