【问题标题】:PHPUnit very slow if test fails如果测试失败,PHPUnit 会非常慢
【发布时间】:2019-05-02 15:13:29
【问题描述】:

运行 PHPUnit 时,如果没有错误,它会在 aprox 中运行。 6 秒,但如果有错误可能需要 3 或 4 分钟....仅报告错误信息。

我在 Windows 中运行 PHP 5.5.3 版和 PHPUnit 3.7.28 版。

测试非常简单,即使是最简单的断言失败也会导致测试报告耗时。

class MyTest extends PHPUnit_Framework_TestCase
{
    public function someTest() {
        $this->assertEquals(true, false); // takes forever to report
    }
}

使用 --debug 运行数据库测试我得到以下输出

D:\xampp\htdocs\blueberry-cms
λ phpunit --debug tests\unit\DatabaseTest.php
PHPUnit 3.7.28 by Sebastian Bergmann.


Starting test 'DatabaseTest::testCRUD'.
F
Starting test 'DatabaseTest::testRetrieval'.
.

Time: 8.91 seconds, Memory: 2.25Mb

There was 1 failure:

1) DatabaseTest::testCRUD
Failed asserting that 19 matches expected 18.

D:\xampp\htdocs\blueberry-cms\tests\unit\DatabaseTest.php:37

FAILURES!
Tests: 2, Assertions: 22, Failures: 1.

测试运行良好,直到“有 1 次失败:”然后它停止输出文本...停止大约 2 或 3 分钟,然后完成输出文本。

【问题讨论】:

  • 你有什么样的日志记录?生成报告文件?代码覆盖率?
  • 我正在使用具有几乎默认配置和 xdebug 的 xampp,如何检查日志记录?
  • 为什么像上面这样的简单测试需要6 秒才能成功?这太多了。我想你有什么想告诉我们的
  • 上面的测试是一个例子,我的真实测试做了一些文件IO,但是我发现6秒和3分钟之间的差异很大
  • 我猜这是因为测试达到了一些 IO 超时。 (失败时).. PHPUnit 的报告工作对于失败或成功的测试是相同的

标签: phpunit


【解决方案1】:

我也有同样的问题。我找到了一个解决方法:

  1. 下载 PHPunit 的.phar 副本并将其放在文档根目录中。 (link to phpunit downloads page)
  2. 不要从 php“bin 文件夹”(或您在 $PATH 中的任何位置)运行 phpunit 命令,而是从我的存储库的根目录运行 php phpunit.phar。
    Ej:php phpunit.phar --bootstrap=./tests/bootstrap.php ./tests/

应该可以通过更新phpunit来解决这个问题。

(在我的情况下(PHP 5.6)我的 PHP“bin 文件夹”中的 phpunit 版本是 3.7.21,而我下载的 .phar 是版本 4.8.36)

我没有对此进行测试,但它应该也可以工作:

  1. 替换位于您的 php“bin 文件夹”中的 phpunit 版本(或在您的 $PATH 中的任何位置)
  2. 现在,每次运行 phpunit 时,您都将使用最新版本,而无需将 .phar 复制到每个新项目。

【讨论】:

    猜你喜欢
    • 2017-03-18
    • 2013-07-28
    • 1970-01-01
    • 2011-04-24
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2013-08-26
    相关资源
    最近更新 更多