3

build.xmlphpUnderControlに次のファイル設定があります。

    <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の実行後にphpunit.xmlが空になります。

ありがとう。

更新:ちなみに、削除failonerror="on"しても機能することは明らかですが、PHPUnitは255を返し、エラーが発生した場合は失敗させたいのですが、問題はまだエラーがないのに失敗することです。

4

5 に答える 5

6

255PHPが致命的で(私が思うに)解析エラーに対してスローするエラーコードです。

おそらくテストが実行された後、スクリプトの実行に致命的または解析エラーが発生する可能性がありますか?

PHPエラーはありますか?追加するとどうなりますerror_reporting(E_ALL);か?

于 2010-07-23T15:34:34.740 に答える
1

おそらく、「exec return:255」は、前述のPekkaのようにerror_reporting(E_ALL)を有効にした後に表示されるCodeCoverageレポートのメモリ消費が原因です。また試してみてくださいinit_set('display_errors','on');。通常、「メモリサイズ...使い果たされた」致命的な問題に直面します。

于 2010-11-25T15:14:22.553 に答える
0

私の場合、Webサーバーがインストールされていなかったことがわかりました。nginxをインストールしてWebサーバーとして設定すると(使用していない場合でも)、問題が修正されました。

于 2011-02-16T03:24:50.560 に答える
0

phpunit.xmlの空のテストスイート、つまりテストコードにassertXXXがないことが原因である可能性があります

于 2012-09-05T07:13:04.407 に答える
0

Selenium、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>
于 2014-02-16T03:01:31.723 に答える