som*_*web 19 php phpunit unit-testing
我使用PHPUnit对我的函数进行单元测试,当代码中出现任何警告时,不会对该函数执行测试脚本,任何人都可以告诉我如何忽略警告并继续测试
hak*_*kre 32
正如Juhana评论的那样,您应该首先修复出现警告的代码.这表明代码无法正常/严格地运行.
默认情况下,PHPUnit将在执行测试期间触发的PHP错误,警告和通知转换为异常.
请参阅测试PHP错误,其中包含有关如何测试警告的更多信息(以及如何忽略在测试中调用的子例程中的警告).
要禁用默认行为,您可以setUp通过在全局命名空间中设置静态变量来告诉PHPUnit在测试中执行此操作,例如在测试或测试本身中:
# Warning:
PHPUnit_Framework_Error_Warning::$enabled = FALSE;
# notice, strict:
PHPUnit_Framework_Error_Notice::$enabled = FALSE;
Run Code Online (Sandbox Code Playgroud)
更改默认行为的另一个选项是使用具有以下设置的XML文件配置testrunner:
<phpunit convertErrorsToExceptions="false"
convertNoticesToExceptions="false"
convertWarningsToExceptions="false">
</phpunit>
Run Code Online (Sandbox Code Playgroud)
这三个选项不可用作命令行开关.
另请参阅相关问题:测试使用PHPUnit触发错误的方法的返回值.
在每个测试级别执行此操作的记录策略是,@当您的测试调用将触发警告或通知的函数时,使用错误抑制运算符。
以下代码是PHPUnit 文档中的示例:
<?php
class ErrorSuppressionTest extends PHPUnit_Framework_TestCase
{
public function testFileWriting() {
$writer = new FileWriter;
$this->assertFalse(@$writer->write('/is-not-writeable/file', 'stuff'));
}
}
class FileWriter
{
public function write($file, $content) {
$file = fopen($file, 'w');
if($file == false) {
return false;
}
// ...
}
}
Run Code Online (Sandbox Code Playgroud)