Расширение сообщения об ошибке phpunit - PullRequest
2 голосов
/ 01 августа 2011

Я хочу добавить вывод журнала ко всем тестовым сообщениям.

$this->assertTrue(FALSE, "This assertion is False.". myLog::GetErrors());

Я попытался расширить функцию PHPUnit_Framework_TestCase :: assertThat с помощью моего добавленного сообщения, но, похоже, оно не влияет на него. Я знаю, что расширенный PHPUnit_Framework_TestCase работает, потому что у меня есть несколько вспомогательных функций (генерация случайных строк), которые я использую для тестирования.

Есть еще мысли? Может ли это быть слушатель клиента?

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Все утверждения являются статическими методами из PHPUnit_Framework_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);
}

Обновление: Как отметил Грегори Ло в комментарии ниже, setCustomMessage() иgetCustomMessage() были удалены в PHPUnit 3.6.(

0 голосов
/ 23 октября 2015

В последних версиях PHPUnit это больше не нужно. Когда вы указываете параметр ошибки в $this->assertXXXX(), он предшествует исходному сообщению PHPUnit.

Скриншот:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...