【发布时间】:2017-08-09 14:10:26
【问题描述】:
我在 PHP 单元测试套件中有大量测试。
运行完整套件时所有测试都会通过,但是单独运行时,某些测试可能会通过或失败,具体取决于我如何调用 PHP 单元:
$ php phpunit --configuration phpunit.xml --filter FooIntegrationTest
PHPUnit 5.7.19 by Sebastian Bergmann and contributors.
................ 16 / 16 (100%)
Time: 3.97 seconds, Memory: 109.50MB
OK (16 tests, 36 assertions)
对比
$ php phpunit --configuration phpunit.xml tests/Integration/FooIntegrationTest.php
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
..........F.F... 16 / 16 (100%)
Time: 3.73 seconds, Memory: 111.75MB
FAILURES!
Tests: 16, Assertions: 36, Failures: 2.
有问题的失败是意外结果(即代码运行良好),没有 PHP 错误或异常。
大多数测试都会通过两种方式,并且产生上述结果的那些测试似乎没有什么特别之处。
【问题讨论】:
-
我注意到的一件事是他们似乎运行了两个版本的 PHPUnit - 5.7.19 和 5.7.21。
-
啊,是的,我在不同的 VM 中进行了测试,看看它是否可能是 PHP 单元版本问题。但是,无论版本如何,问题仍然存在。
-
如果它们运行不同的版本,则可能存在其他差异(即不同的 phpunit.xml)或从不同的目录运行(这会影响路径等) .
-
这些失败的测试有什么共同点吗? (文件访问,特定数据库访问)
-
两个测试都针对本地 Elasticsearch 索引执行复杂查询。但是我有其他测试可以执行类似的查询而没有问题。
标签: php unit-testing phpunit