3

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

    <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

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

脚本执行中是否会出现致命或解析错误,可能是在测试运行之后?

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

于 2010-07-23T15:34:34.740 回答
1

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

于 2010-11-25T15:14:22.553 回答
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 回答
0

可能是因为里面有空的testsuite phpunit.xml,也就是测试代码中没有assertXXX

于 2012-09-05T07:13:04.407 回答
0

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

于 2011-02-16T03:24:50.560 回答