扩展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异常中。