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

测试通过或失败,取决于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错误或异常。

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

+1

我注意到的一件事是他们似乎运行PHPUnit的两个版本 - 5.7.19和5.7.21。 –

+0

啊是的,我测试了不同的虚拟机,看它是否可能是一个PHP单元版本问题。 但是,无论版本如何,问题都会持续存在。 – se75

+0

更多的情况是,如果他们运行的是不同的版本,可能存在其他差异(即不同的phpunit.xml)或从不同的目录运行(这会影响路径等)。 –

解决....从一个不相关的测试类

phpunit ... FooIntegrationTest.php只打开&命名空间冲突运行单独的类文件specfied

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

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