测试通过或失败,取决于PHP单元调用的方法
问题描述:
我有大量的PHP单元测试套件中的测试。运行完整的套件的时候测试通过或失败,取决于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 ... FooIntegrationTest.php
只打开&命名空间冲突运行单独的类文件specfied
而phpunit ... --filter FooIntegrationTest
将在套房寻找匹配试验打开每个文件;这导致另一个文件中的全局命名空间函数导致错误传递。
获得的经验:不要在单元测试类中声明全局名称空间函数!
我注意到的一件事是他们似乎运行PHPUnit的两个版本 - 5.7.19和5.7.21。 –
啊是的,我测试了不同的虚拟机,看它是否可能是一个PHP单元版本问题。 但是,无论版本如何,问题都会持续存在。 – se75
更多的情况是,如果他们运行的是不同的版本,可能存在其他差异(即不同的phpunit.xml)或从不同的目录运行(这会影响路径等)。 –