2017-08-09 49 views
0

我有大量的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)或從不同的目錄運行(這會影響路徑等)。 –

回答

0

解決....從一個不相關的測試類

phpunit ... FooIntegrationTest.php只打開&命名空間衝突運行單獨的類文件specfied

phpunit ... --filter FooIntegrationTest將在套房尋找匹配試驗打開每個文件;這導致另一個文件中的全局命名空間函數導致錯誤傳遞。

獲得的經驗:不要在單元測試類中聲明全局名稱空間函數!