在线文档教程

Risky Tests

Risky Tests

PHPUnit 在执行测试时可以执行下面记录的额外检查。

无用的测试

对于不测试任何东西的测试,PHPUnit 可能是严格的。可以通过使用--report-useless-tests命令行上的选项或通过设置beStrictAboutTestsThatDoNotTestAnything="true" PHPUnit 的 XML 配置文件来启用此检查。

启用此检查时,不执行断言的测试将被标记为有风险。对模拟对象或注释的期望,如@expectedException计数作为断言。

无意涵盖的代码

PHPUnit 可以严格限制无意覆盖的代码。可以通过使用--strict-coverage命令行上的选项或通过设置checkForUnintentionallyCoveredCode="true" PHPUnit 的 XML 配置文件来启用此检查。

被注释与测试@covers,并执行未使用上市代码@covers@uses启用此检查时,注释将被标记为有风险的。

测试执行期间的输出

在测试期间,PHPUnit 可能对输出严格。可以通过使用--disallow-test-output命令行上的选项或通过设置beStrictAboutOutputDuringTests="true" PHPUnit 的 XML 配置文件来启用此检查。

发出输出的测试(例如通过print在测试代​​码或测试代码中调用)将在启用此项检查时被标记为有风险。

测试执行超时

如果PHP_Invoker软件包已安装且pcntl扩展可用,则可以执行时间限制以执行测试。通过使用--enforce-time-limit命令行上的选项或通过beStrictAboutTestSize="true"在 PHPUnit 的 XML 配置文件中进行设置,可以启用强制执行此时间限制。

@large如果执行时间超过60秒,则用附注标记的测试将失败。该超时可通过timeoutForLargeTests XML 配置文件中的属性进行配置。

@medium如果执行时间超过10秒,则用附注标记的测试将失败。该超时可通过timeoutForMediumTests XML 配置文件中的属性进行配置。

没有注释@medium@large将被视为注释的测试@small。如果执行时间超过1秒,小测试将失败。该超时可通过timeoutForSmallTests XML 配置文件中的属性进行配置。

全局状态操纵

PHPUnit 可以严格控制操纵全局状态的测试。可以通过使用--strict-global-state命令行上的选项或通过设置beStrictAboutChangesToGlobalState="true" PHPUnit 的 XML 配置文件来启用此检查。