测试通过或失败取决于PHP单元调用的方法

时间:2017-08-09 14:10:27

标签: php unit-testing phpunit

我在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)

VS

$ 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错误或异常。

大多数测试都会通过两种方式,对于那些产生上述结果的测试似乎没什么特别的。

1 个答案:

答案 0 :(得分:0)

解决了来自不相关的测试类的名称空间冲突

phpunit ... FooIntegrationTest.php只会打开&运行指定的单个类文件

phpunit ... --filter FooIntegrationTest将打开套件中的每个文件以查找匹配的测试;这导致另一个文件中的全局命名空间函数导致错误传递。

获得的经验教训:不要在单元测试类中声明全局命名空间函数!