phpunit - 需要有关风险测试的帮助
phpunit - Help needed about risky tests
我正在为网站实施一些测试。
在一个特定的测试中,出现了这个结果:
{
"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!
我的问题是:如何找到导致此 'issue' 的代码行?
如果 PHPUnit 检测到测试方法结束时的输出缓冲级别与开始时的级别不同,则会报告该消息。这是因为它使用自己的输出缓冲区并检查测试是否不产生输出。
因为 PHPUnit 中没有忽略这个的选项,所以您需要找到代码中的输出缓冲开始但没有结束(或结束太多)的原因并修复它。
这可能真的很难实现,因为没有提示输出缓冲开始的地方,但您可以对源代码(和库)使用全文搜索来识别候选者。然后寻找异常,这可能会破坏正常的程序流程,从而阻止 ob_end_flush()
(或类似的)被调用。
具体到Test code or tested code did not (only) close its own output buffers
最近运行进入这个。
原来是这个SO问题,答案对我来说是一个解决方案。但是,我不喜欢这个解决方案。关于为什么会发生这种情况有更深层次的原因,而且我写的数百个测试中只有一个...
经过更多的挖掘,我找到了我的问题源于 blade 模板中的 @section()
和 @endsection
调用。
不知为何,由于错误地敲击了键盘,运行dom 键留在了那里。这不会在视觉上造成问题,也不会在页面呈现时向最终用户发出任何危险信号,因此未引起注意。
就我而言——我的错误是
@section('sudo')
...
@endsection2
删除 2
修复了原始问题并允许我删除
的 hacky 解决方案
// // start hacky
// ob_start();
// ob_end_flush();
// ob_get_clean();
// // end hacky
ps。这可能只能解决一部分遇到此 SO 问题的人的问题。很抱歉,如果它不能解决您的问题:)
我的是通过使用修复的:
ob_end_flush();
ob_get_clean();
测试结束时。
我正在为网站实施一些测试。 在一个特定的测试中,出现了这个结果:
{
"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!
我的问题是:如何找到导致此 'issue' 的代码行?
如果 PHPUnit 检测到测试方法结束时的输出缓冲级别与开始时的级别不同,则会报告该消息。这是因为它使用自己的输出缓冲区并检查测试是否不产生输出。
因为 PHPUnit 中没有忽略这个的选项,所以您需要找到代码中的输出缓冲开始但没有结束(或结束太多)的原因并修复它。
这可能真的很难实现,因为没有提示输出缓冲开始的地方,但您可以对源代码(和库)使用全文搜索来识别候选者。然后寻找异常,这可能会破坏正常的程序流程,从而阻止 ob_end_flush()
(或类似的)被调用。
具体到Test code or tested code did not (only) close its own output buffers
最近运行进入这个。
原来是这个SO问题,答案对我来说是一个解决方案。但是,我不喜欢这个解决方案。关于为什么会发生这种情况有更深层次的原因,而且我写的数百个测试中只有一个...
经过更多的挖掘,我找到了我的问题源于 blade 模板中的 @section()
和 @endsection
调用。
不知为何,由于错误地敲击了键盘,运行dom 键留在了那里。这不会在视觉上造成问题,也不会在页面呈现时向最终用户发出任何危险信号,因此未引起注意。
就我而言——我的错误是
@section('sudo')
...
@endsection2
删除 2
修复了原始问题并允许我删除
// // start hacky
// ob_start();
// ob_end_flush();
// ob_get_clean();
// // end hacky
ps。这可能只能解决一部分遇到此 SO 问题的人的问题。很抱歉,如果它不能解决您的问题:)
我的是通过使用修复的:
ob_end_flush();
ob_get_clean();
测试结束时。