【问题标题】:PHPUnit not running all tests when executed with coveragePHPUnit 在覆盖范围内执行时未运行所有测试
【发布时间】: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


【解决方案1】:

如果启用了严格模式,您可能需要注释您的测试

class MyTest extends PHPUnit_Framework_TestCase {
    /**
     * @large
     */
    public function testSomething(){
        // some test code here;
    }
}

【讨论】:

  • 不,严格模式未启用。即便如此,我将小测试的时间限制(默认)设置为非常高的值,但无济于事。
【解决方案2】:

如果其他人面临这个问题:我设法在 linux 机器上成功运行了所有测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    相关资源
    最近更新 更多