phpUnderControl 和 PHPUnit 总是使用代码 255 构建失败

phpUnderControl and PHPUnit always failing build with code 255

提问人:Gcoop 提问时间:7/23/2010 最后编辑:Gcoop 更新时间:2/16/2014 访问量:5010

问:

我在phpUnderControl中设置了以下文件。build.xml

    <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 是空的。

谢谢。

更新:顺便说一句,如果我删除它,显然可以工作,但 PHPUnit 仍然返回 255,我确实希望它在任何错误时都失败,问题是没有任何错误,但它仍然失败!failonerror="on"

phpunit 巡航控制 phpundercontrol

评论


答:

6赞 Pekka 7/23/2010 #1

255是 PHP 在致命和(我认为)解析错误时抛出的错误代码。

脚本执行中是否存在致命错误或解析错误,也许在测试运行之后?

有PHP错误吗?如果添加会发生什么?error_reporting(E_ALL);

评论

0赞 Gcoop 7/23/2010
错误报告已打开,但我还是添加了 func 调用,并且通过直接执行 PHPUnit 或使用 ant 通过 phpUnderControl 输出没有额外的内容。
1赞 Pekka 7/23/2010
@Gcoop奇怪。Display_errors也开启了?蚂蚁是否通过它运行的程序传递 stdout/stderr 输出?也许重定向登录到文件中只是为了查看错误是否被吞噬在某个地方?(可以在php.ini中完成)
0赞 Gcoop 7/23/2010
谢谢,display_errors在php中被关闭了.ini :(太傻了。现在输出向我展示了问题所在!这与单元测试无法找到其测试的文件有关,非常感谢。
1赞 mmm 11/25/2010 #2

“exec returned: 255”可能是由 CodeCoverage 报告的内存消耗引起的,该报告将在启用 error_reporting(E_ALL) 后显示,就像 Pekka 提到的那样。也试试吧。通常,您将面临“内存大小......惊呼'致命。init_set('display_errors','on');

0赞 Rafael Fonseca 2/16/2011 #3

就我而言,原来我没有安装网络服务器。安装 nginx 并将其设置为 Web 服务器(即使我没有使用它)解决了这个问题。

0赞 Feng 9/5/2012 #4

可能是由于测试代码中某个空的 testsuite 导致的,即测试代码中没有 assertXXXphpunit.xml

0赞 JTHouseCat 2/16/2014 #5

我让 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>