2010-07-23 3 views
3

У меня есть следующая настройка файла build.xml в phpUnderControl.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.

Спасибо.

UPDATE: Кстати, если я удаляю failonerror="on", это работает, очевидно, но PHPUnit по-прежнему возвращает 255, и я хочу, чтобы он терпел неудачу при любых ошибках, проблема в том, что ошибок еще нет, но он все равно терпит неудачу!

ответ

6

255 - код ошибки, который PHP бросает на фатальные и (я думаю) ошибки анализа.

Возможно, произошла фатальная или синтаксическая ошибка при выполнении сценария, возможно, после того, как тесты были запущены?

Любые ошибки PHP? Что произойдет, если вы добавите error_reporting(E_ALL);?

+0

отчетов об ошибках, но я добавил, что Func вызова все равно и ничего дополнительного не выводится либо через выполнение PHPUnit непосредственно или через phpUnderControl, используя муравей. – Gcoop

+1

@Gcoop странно. Display_errors включен? Пропускает ли ant через stdout/stderr вывод программ, которые он запускает? Может быть, переадресовать вход в файл, чтобы увидеть, где-то проглочены ошибки? (Может быть сделано в php.ini) –

+0

Пятно на спасибо, display_errors был отключен в php.ini :(так глупо. Результат теперь показывает мне, в чем проблема!Это связано с тем, что единичный тест не может найти файл для его тестирования, спасибо. – Gcoop

1

Вероятно, «exec вернулся: 255» вызван потреблением памяти отчета CodeCoverage, который будет отображаться после включения error_reporting (E_ALL), как упоминалось в Pekka. Попробуйте также init_set('display_errors','on');. Обычно вы столкнетесь с «размером памяти ... exhaused» фатальным.

0

В моем случае оказалось, что у меня не установлен веб-сервер. Установка nginx и настройка его в качестве веб-сервера (даже если я его не использую) устранили проблему.

0

это может быть вызвано какой-то пустой TestSuite в phpunit.xml, то есть, нет assertXXX в тестовом коде

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> 
Смежные вопросы