PHPUnit没有提供有关跳过和不完整测试的足够信息

时间:2012-08-10 12:41:00

标签: php unit-testing phpunit

我正在尝试捕获PHPUnit的输出:

$pu_result = new \PHPUnit_Framework_TestResult();
$pu_result->addListener(new \PHPUnit_Util_Log_JSON());      

$pu_suite = new \PHPUnit_Framework_TestSuite();

// here I add tests  
// $pu_suite->addTestSuite(...);

ob_start();
$pu_suite->run($pu_result);    
$output = ob_get_clean();

这给了我一个json编码的字符串作为$ output(坏的json btw,但我可以解决它)。

问题是不完整和跳过测试的“消息”属性是“跳过测试”或“不完整测试”,并且不包含我在$this->markTestIncomplete()$this->markTestSkipped()来电中提供的消息:(

我也能得到吗?

3 个答案:

答案 0 :(得分:5)

尝试使用-v选项运行phpunit(--verbose)

答案 1 :(得分:3)

您可以通过升级到最新的3.6版本在JSON日志中获取这些内容。查看addIncompleteTestaddSkippedTest的{​​{3}},我可以看到他们都在日志中添加了异常消息。但是,当进行此更改时,我无法找到。如果这些更改不在3.6.x中,您可以创建自己的子类并轻松覆盖这些方法。

答案 2 :(得分:1)

注意在phpunit.xml或其他任何配置中定义printerClass设置。默认的打印机类将包括跳过的测试,但其他可能不包括。

例如,

"PHPUnit_TextUI_ResultPrinter"不会打印任何跳过的测试。