문제

대상의 성공 여부에 관계없이 대상의 실행이 완료되면 메시지를 내보내는(에코를 사용하여) 작업을 정의하려고 합니다.특히 대상은 일부 단위 테스트를 실행하는 작업을 실행하며 결과를 사용할 수 있는 위치를 나타내는 메시지를 내보내고 싶습니다.

<target name="mytarget">
  <testng outputDir="${results}" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

안타깝게도 테스트가 실패하면 작업이 실패하고 실행이 중단됩니다.따라서 테스트가 통과한 경우에만 메시지가 출력됩니다. 이는 제가 원하는 것과 반대입니다.작업보다 작업을 먼저 배치할 수 있다는 것을 알고 있지만 이렇게 하면 사용자가 이 메시지를 놓치기가 더 쉬워집니다.내가 하려는 일이 가능한 일인가?

업데이트: 내가 바보라는 것이 밝혀졌습니다.<testng> 작업에 quitOnFailure="true"가 있었는데, 이는 내가 본 동작을 설명합니다.이제 문제는 이것을 false로 설정하면 테스트가 실패하더라도 전체 개미 빌드가 성공한다는 것입니다. 이는 제가 원하는 것이 아닙니다.작업을 사용한 아래 답변은 제가 원하는 것일 수도 있습니다.

도움이 되었습니까?

해결책

문제에 대한 해결책은 사용하는 것입니다 failureProperty 와 함께 haltOnFailure 다음과 같은 테스트 작업의 속성 :

<target name="mytarget">
  <testng outputDir="${results}" failureProperty="tests.failed" haltOnFailure="false" ...>
    ...
  </testng>
  <echo>Tests complete.  Results available in ${results}</echo>
</target>

그런 다음 빌드가 실패하기를 원할 때는 다음과 같이 개미 코드를 추가합니다.

<target name="doSomethingIfTestsWereSuccessful" unless="tests.failed">
   ...
</target>

<target name="doSomethingIfTestsFailed" if="tests.failed">
   ...
   <fail message="Tests Failed" />
</target>

그런 다음 개미 빌드가 실패하려는 곳에서 DosomethingIftStsfailed를 호출 할 수 있습니다.

다른 팁

당신은 a를 사용할 수 있습니다 Try-Catch 그렇게 블록 :

<target name="myTarget">
    <trycatch property="foo" reference="bar">
        <try>
            <testing outputdir="${results}" ...>
                ...
            </testing>
        </try>

        <catch>
            <echo>Test failed</echo>
        </catch>

        <finally>
            <echo>Tests complete.  Results available in ${results}</echo>
        </finally>
    </trycatch>
</target>

에 따르면 개미 문서, 에는 testng 작업이 실패할 경우 빌드 프로세스를 중지할지 여부를 제어하는 ​​두 가지 속성이 있습니다.

중단 실패 - 테스트 실행 중에 고장이 발생한 경우 빌드 프로세스를 중지하십시오.기본값은 거짓입니다.

Haltonskipped - 적어도 건너 뛰는 테스트 중에 빌드 프로세스를 중지하십시오.기본값은 거짓입니다.

이 속성을 설정하는지 여부를 코드 조각에서 알 수 없습니다.현재 true로 설정되어 있는 경우 hatonfailure를 false로 명시적으로 설정해 보는 것이 좋습니다.

또한 Ant에서 <exec> 기능을 사용한다고 가정하면 실행된 명령이 실패할 경우 발생하는 일을 제어하는 ​​유사한 속성이 있습니다.

실패 오류 - 명령이 반환 코드 신호 실패로 종료되면 빌드 프로세스를 중지하십시오.기본값은 거짓입니다.

실패실행실패 - 프로그램을 시작할 수 없으면 빌드를 중지합니다.기본값은 true입니다.

귀하의 게시물에 있는 부분 코드 조각을 토대로 알 수는 없지만, 제 추측으로는 가장 가능성이 높은 범인은 다음과 같습니다. 실패 오류 또는 중단 실패 true로 설정됩니다.

당신의 예에서 "testng"이라는 가짜 작업을 보여주고 있지만 Junit Target을 사용하고 있다고 가정합니다.

이 경우 기본적으로 주니트 대상이 테스트 실패에 대한 실행을 중단시키지 않기 때문에 이러한 결과를 보는 것은 이상합니다.

Halt 속성을 사용하여 Ant에게 Junit 고장 또는 오류의 빌드를 중지하도록 실제로 지시하는 방법이 있습니다 (예 :). Haltonfailure:

<target name="junit" depends="junitcompile">
    <junit printsummary="withOutAndErr" fork="yes" haltonfailure="yes">

그러나 둘 다 Haltonfailure 그리고 Haltonerror 기본적으로 OFF로 설정됩니다. 빌드 파일을 확인 하여이 플래그 중 하나가 설정되었는지 확인할 수 있다고 생각합니다. 그것들은 전 세계적으로 설정할 수 있으므로, 당신이 시도 할 수있는 한 가지는 당신의 작업에서 그것을 "아니오"로 명시 적으로 설정하여 글로벌 범위로 설정 될 경우를 대체 할 수 있도록 재정의되도록하는 것입니다.

http://ant.apache.org/manual/tasks/junit.html

testng 작업을 포크 할 수 있습니까? 그렇다면 TestNG 작업이 다른 JVM에서 실행되도록 해당 기능을 사용하려고합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top