2010-07-23 3 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을 실행 한 후 phpunit.xml이 비어있는 경우 차이가 있습니다.

감사합니다.

업데이트 : 덧붙여 말하자면, failonerror="on"을 제거하면 분명히 작동하지만 PHPUnit은 여전히 ​​255를 반환하고 어떤 오류에서도 오류가 발생하기를 원하지만 문제는 아직 발생하지 않습니다.

답변

6

255은 PHP가 치명적인 오류를 일으키는 오류 코드입니다.

테스트를 실행 한 후 스크립트 실행에 치명적이거나 구문 분석 오류가있을 수 있습니까?

PHP는 오류가 있습니까? error_reporting(E_ALL);을 추가하면 어떻게됩니까?

+0

오류보고가있다, 그러나 나는 어쨌든 FUNC 호출을 추가하고 추가 아무것도 개미를 사용하여 직접 또는 phpUnderControl를 통해 phpunit을 실행을 통해 하나가 출력되지 않습니다. – Gcoop

+1

@Goop 이상한. Display_errors도 켜져 있습니까? 개미는 실행되는 프로그램에 의해 stdout/stderr 출력을 통과합니까? 어쩌면 오류가 어딘가에 삼키는 지 여부를보기 위해 로깅을 파일로 리디렉션 할 수 있습니까? (php.ini에서 행해질 수 있습니다) –

+0

감사합니다. display_errors는 php.ini에서 꺼졌습니다 :(바보 같네요. 이제 출력이 나에게 문제가 무엇인지 보여줍니다!유닛 테스트가 파일 테스트를 찾지 못하는 것과 관련이 있습니다. 덕분에 많은 도움이됩니다. – Gcoop

1

아마도 'exec returned : 255'는 CodeCoverage 보고서의 메모리 소비로 인해 발생했을 가능성이 높습니다. 이는 Pekka와 같이 error_reporting (E_ALL)을 활성화 한 후에 표시됩니다. 또한 init_set('display_errors','on');을 시도하십시오. 보통 당신은 '기억의 크기 ... exhaused'치명적인 얼굴을 보게 될 것입니다.

0

필자의 경우 웹 서버가 설치되어 있지 않은 것으로 나타났습니다. nginx를 설치하고 웹 서버로 설정하면 (비록 내가 사용하지 않더라도) 문제가 해결되었습니다.

0

은은, ​​즉, phpunit.xml 일부 비어있는 TestSuite에 의해 발생할 수 있습니다 내가 셀레늄, phpunit을, PHPUnderControl 및 CruiseControl에있어

0

테스트 코드에는 assertXXX없는 모든 그냥

(여기 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> 
관련 문제