2010-07-23 56 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>