我在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错误或异常。
大多数测试都会通过两种方式,对于那些产生上述结果的测试似乎没什么特别的。
答案 0 :(得分:0)
解决了来自不相关的测试类的名称空间冲突
phpunit ... FooIntegrationTest.php
只会打开&运行指定的单个类文件
而phpunit ... --filter FooIntegrationTest
将打开套件中的每个文件以查找匹配的测试;这导致另一个文件中的全局命名空间函数导致错误传递。
获得的经验教训:不要在单元测试类中声明全局命名空间函数!