phpunit - 有关冒险测试所需的帮助

时间:2016-07-15 15:49:48

标签: php testing phpunit

我正在为网站实施一些测试。 在特定测试中,出现了以下结果:

{
"event": "test",
"suite": "Example_V_test",
"test": "Example_V_test::test_3",
"status": "error",
"time": 13.469105958939,
"trace": [
    {
        "file": "\/opt\/lampp\/htdocs\/buy\/application\/tests\/phpunit.phar",
        "line": 569,
        "function": "main",
        "class": "PHPUnit_TextUI_Command",
        "type": "::"
    }
],
"message": "Risky Test: Test code or tested code did not (only) close its own output buffers",
"output": ""
}R                                                                 3 / 3 (100%)

Time: 25.76 seconds, Memory: 59.25MB

There was 1 risky test:

1) Example_V_test::test_3
Test code or tested code did not (only) close its own output buffers

/opt/lampp/htdocs/buy/application/tests/phpunit.phar:569

OK, but incomplete, skipped, or risky tests!

我的问题是:如何查找导致此问题的代码行?'?

1 个答案:

答案 0 :(得分:8)

如果PHPUnit检测到测试方法结束时的输出缓冲级别与开头的级别不同,则会报告该消息。这是因为它使用自己的输出缓冲区并检查测试是否产生无输出。

因为PHPUnit中没有选项可以忽略这一点,所以你需要找到代码中的输出缓冲启动但未结束(或结束太多)的原因并修复它。

这可能真的很难实现,因为没有提示,输出缓冲开始,但你可以在源代码(和libs)上使用全文搜索来识别候选者。然后查找异常,这可能会破坏正常的程序流,因此阻止调用ob_end_flush()(或类似的)。