【发布时间】:2015-05-20 09:58:42
【问题描述】:
我有一个测试套件,其中包含大约 50 个测试 - 每个测试都在测试通过 Promise 实现的异步网络调用。当我运行 PHPUnit 时,它会执行所有测试并且所有测试都通过 - 每次。
但是当我使用覆盖时,所有测试都不会运行,第一个测试部分运行并且脚本退出,没有生成覆盖。有什么帮助吗?
这是我的命令:
phpunit --coverage-html ./coverage --debug --verbose tests/
我的代码是这样的:
class ClassToTest
{
function foo($callback)
{
//asynchronously do something, trigger callback when done.
}
}
class Test
{
function testFoo()
{
$count = 1;
$obj->foo( new function() {
$obj->foo( new function() {
$obj->foo( new function() {
$count = 0;
});
});
});
// check if $count == 0, exit. If not, then sleep for sometime and repeat.
}
}
我使用的是 PHP 5.6.6
我尝试用 PHPStorm 运行同样的东西,最后我在它的控制台中得到了一个错误代码。它是这样说的:
Process finished with exit code -1073740940 (0xC0000374)
发现不支持此错误。任何帮助表示赞赏。谢谢。
【问题讨论】:
-
我们可以看看你的测试代码示例吗?
-
这与超时有关吗?我注意到这只发生在长时间运行的测试中。但是 PHPUnit 没有给出错误。它只是默默地完成运行。我在 php.ini 中提出了 max_execution_time = 7200。但这没有帮助。也许正在施加另一个 PHPUnit 特定的时间限制?
-
您可以尝试使用 phpunit --coverage-html ./coverage --debug --verbose tests/name_of_test.php 之类的东西显式运行测试,或者您可以将所有其他测试移出目录。这将告诉我们它是否与特定测试相关。你有用于配置的 phpunit.xml 文件吗?
-
是的,我试过了。它发生在少数测试中。我发现只有在执行长时间运行的测试时才会发生这种故障。较短的测试运行良好并生成报告。但是测试运行时间超过 20-30 秒,脚本就会崩溃。
标签: phpunit