2010-12-09 57 views
2

我爲我的PHP應用程序編寫了幾個PHPUnit測試。我正在開發兩臺同步整個開發文件系統的開發機器,並且有一個自動測試系統在一個乾淨的svn checkout上運行測試。Phpunit在不同的機器上表現不同

現在,奇怪的事情正在發生。其中一臺開發機器運行Ubuntu Linux 10.10,PHP 5.3.3,phpunit 3.4.6,後來我升級到3.4.14。當我在每個測試中運行phpunit時,所有的測試都通過了。當我在我的xml配置文件上運行phpunit時,只運行phpunit --configuration=phpunit.cfg,最後一個測試用例失敗,並返回Class myClass not found錯誤。此類位於使用require_once加載的文件中。升級phpunit沒有任何區別。

編輯:我有一種感覺,文件PHP包括使用require_once不復位在我的Linux機器,但類的列表實際上是失去了,那就是,它認爲它已經 已經包含myclass.php而裏面的類沒有加載。

現在,另一臺機器運行Mac OS X Snow Leopard 10.6.5,PHP 5.3.3和phpunit 3.4.3。如果我單獨運行單元測試,就不會發生錯誤,就像在Linux上一樣,但是當我使用xml配置運行測試時,也不會出現任何錯誤。我們還有一個運行linux 10.4 LTS,PHP 5.2.6和phpunit 3.4.9的自動測試環境。也沒有錯誤。

所有系統使用完全相同的文件,因此源代碼或測試沒有區別。而且phpunit.xml也是一樣的。

我感覺完全在黑暗中。我怎樣才能找出問題的癥結所在?

Linux開發機器和Macbook都運行PHP 5.3.3。自動測試機器正在運行5.2.6

+0

PHPUnit版本? – 2010-12-09 17:34:44

回答

0

它可能不是PHPUnit正在執行,而是一個本地php配置問題,導致您的系統在測試中出現問題?在兩臺機器上區分你的php.ini,你很可能會發現一些不同之處。

1

有兩點需要注意:

  • 將包括在兩臺機器上的PHP配置路徑
  • 不存在的類文件在你的主目錄圍坐的另一個副本或的cwd劇本。通常.將在PHP的包含路徑和流氓副本的文件可能導致這樣的問題
相關問題