扩展phpunit错误消息
我想向所有测试消息添加日志输出扩展phpunit错误消息,phpunit,Phpunit,我想向所有测试消息添加日志输出 $this->assertTrue(FALSE, "This assertion is False.". myLog::GetErrors()); 我尝试用附加的消息扩展PHPUnit\u Framework\u TestCase::assertThat函数,但似乎没有效果。我知道扩展的PHPUnit_Framework_测试用例是有效的,因为我有几个助手函数(随机字符串生成)在那里,我也使用它们进行测试 还有其他想法吗?它可能是客户侦听器吗?所有断言都是
$this->assertTrue(FALSE, "This assertion is False.". myLog::GetErrors());
我尝试用附加的消息扩展PHPUnit\u Framework\u TestCase::assertThat函数,但似乎没有效果。我知道扩展的PHPUnit_Framework_测试用例是有效的,因为我有几个助手函数(随机字符串生成)在那里,我也使用它们进行测试
还有其他想法吗?它可能是客户侦听器吗?所有断言都是来自
PHPUnit\u Framework\u Assert
的静态方法,不能被TestCase
的子类覆盖。但是,您可以定义自己的断言,用修改后的消息调用原始消息
public static function assertTrue($value, $message='') {
PHPUnit_Framework_Assert::assertTrue($value, $message . myLog::GetErrors());
}
所有失败的测试都会调用onNotSuccessfulTest(),异常是唯一的参数。您可以重写此方法,并在某些情况下将日志错误添加到异常消息中。除了包含在异常中的错误消息之外,一些PHPUnit异常还提供了第二个描述
public function onNotSuccessfulTest(Exception $e) {
if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
$e->setCustomMessage(implode(PHP_EOL,
array($e->getCustomMessage(), myLog::GetErrors())));
}
parent::onNotSuccessfulTest($e);
}
更新:正如Gregory Lo在下面的评论中指出的那样,
setCustomMessage()
和getCustomMessage()
在PHPUnit 3.6中被删除:(在最近的PHPUnit版本中,不再需要它。
当您在$this->assertXXXX()
中指定错误参数时,它位于PHPUnit的原始消息之前
截图:
谢谢。我决定接受你的第二个建议,因为我不想重写每个断言。你从哪里得到这些getCustomMessage和setCustomMessage方法的?PHPUnit_框架中没有这样的方法_ExpectationFailedException@GregoryLo遗憾的是,它们在3.6版本中被删除了,我看不出有什么原因有一段时间,我将创建一个pull请求,将它们添加到基本PHPUnit异常中。