2010-07-23 42 views
3

我在phpUnderControl中設置了以下build.xml文件。phpUnderControl和PHPUnit始終以代碼255構建失敗

<target name="phpunit"> 
    <exec executable="phpunit" dir="${basedir}/httpdocs" failonerror="on"> 
     <arg line="--log-junit ${basedir}/build/logs/phpunit.xml 
       --coverage-clover ${basedir}/build/logs/phpunit.coverage.xml 
       --coverage-html ${basedir}/build/coverage 
       --colors 
       ${basedir}/httpdocs/qc/unit/CalculatorTest.php" /> 
    </exec> 
</target> 

對於一些未知的原因,構建總是失敗,出現以下消息。

phpunit: 
[exec] PHPUnit 3.4.15 by Sebastian Bergmann. 
[exec] 

BUILD FAILED 
/opt/cruisecontrol-bin-2.8.3/projects/citest.local/build.xml:30: exec returned: 255 

我已經在單元目錄和PHPUnit返回中手動運行了非常簡單的單元測試。

PHPUnit 3.4.15 by Sebastian Bergmann. 

. 

Time: 0 seconds, Memory: 5.25Mb 

OK (1 test, 1 assertion) 

有沒有人知道爲什麼它會一直失敗的構建,當所有的測試都很好?

我的構建腳本確實有一個乾淨的方法,它刪除和記錄文件,所以它不是。我還手動刪除了日誌文件,以防萬一它是該腳本。並且更改了日誌目錄的所有者,使它們可寫。

如果它有什麼區別,phpunit.xml在PHPUnit運行後是空的。

謝謝。

更新:順便說一句,如果我刪除failonerror="on"它很有效,但PHPUnit仍然返回255,我確實希望它失敗的任何錯誤,問題是沒有任何錯誤,但它仍然失敗!

回答

6

255是PHP在致命和(我認爲)解析錯誤時發生的錯誤代碼。

在腳本執行過程中可能存在致命或解析錯誤,也許在測試運行後?

任何PHP錯誤?如果您添加error_reporting(E_ALL);,會發生什麼情況?

+0

錯誤報告是對的,但我無論如何補充說FUNC通話並沒有什麼額外的或者通過直接或通過phpUnderControl執行PHPUnit的,使用ant輸出。 – Gcoop 2010-07-23 15:48:50

+1

@GOOP怪。 Display_errors也一樣?螞蟻是否通過它運行的程序輸出stdout/stderr?也許將日誌重定向到一個文件中,只是爲了查看錯誤是否被吞噬了。 (可以在php.ini中完成) – 2010-07-23 15:51:58

+0

現貨感謝你,display_errors在php.ini中被關閉:(如此愚蠢,輸出現在向我顯示了問題所在!這與單元測試無法找到它的測試文件有關,非常感謝。 – Gcoop 2010-07-23 15:57:50

1

'exec returned:255'可能是由CodeCoverage報告的內存消耗引起的,在啓用error_reporting(E_ALL)之後將顯示此消息,如Pekka所述。也試試init_set('display_errors','on');。 Usualy,你將面臨'記憶力大小......窮盡'致命。

0

就我而言,事實證明我沒有安裝網絡服務器。安裝nginx並將其設置爲網絡服務器(即使我不使用它)解決了這個問題。

0

它可能是由一些空測試套件中phpunit.xml造成的,也就是說,在測試代碼中沒有assertXXX

0

我硒,PHPUnit的,PHPUnderControl和CruiseControl的所有一起工作(這裏http://www.siteconsortium.com/h/p1.php?id=php002

只是一個非常基本的例子,但我能夠讓它像這樣工作。從一些簡單的啓動和複製其他的東西回去。

<?xml version="1.0" encoding="UTF-8"?> 
<project name="test" default="build" basedir="."> 

<target name="build"> 
    <exec executable="C:\\PHP\\phpunit.bat" dir="C:\\workspace\\proj\\phpunit" failonerror="on"> 
    <arg line="--log-junit C:\\workspace\\proj\\build\\logs\\phpunit.xml 
      --configuration C:\\workspace\\proj\\phpunit.xml 
      --include-path C:\\trunk\\includes C:\\workspace\\proj\\includes" /> 
    </exec> 
    </target> 
</project> 
相關問題