2012-09-05 4 views
11

일부 통합 테스트를 실행하기 위해 maven-failsafe-plugin을 사용하고 싶습니다. 테스트에 실패하면 Maven이 빌드를 실패하고 BUILD SUCCESS를 실패하게합니다.maven-failsafe-plugin 실패 및 빌드 성공?

Tests run: 103, Failures: 1, Errors: 0, Skipped: 26 
[INFO] BUILD SUCCESS* 


어떻게 구성 할 수 있습니다, 성공하지 구축이? 당신이 모두 integration-testverify 단계가 실행되어야 mvn clean install을 실행하고 있기 때문에

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>${failsafe.version}</version> 
    <configuration> 
     <systemProperties> 
      <CI_INTEGRATION_OVERRIDE_PATH>${basedir}/..</CI_INTEGRATION_OVERRIDE_PATH> 
     </systemProperties> 
     <includes> 
      <include>**/integration/**/*.java</include> 
     </includes> 
     <excludes> 
      <exclude>**/integration/**/*TestSuite.java</exclude> 
     </excludes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
+0

당신은 받는다는 - 안전 장치 - 플러그인의 버전을 사용합니까 mvn failsafe:verify 전화? 어떤 Maven 버전입니까? 통합 테스트를 실행하기 위해 mvn을 어떻게 불렀습니까? – khmarbaise

+2

참조 [이 메일 스레드 (http://maven.40175.n5.nabble.com/Failing-a-build-with-maven-failsafe-plugin-td3199308.html)의 "메이븐 - 사용자". –

+0

MAVEN CALL : mvn clean-install -p jars failsafe : 통합 테스트 -e 2.12 MAVEN 3.16 – Fawi

답변

1

솔루션입니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <skip>true</skip> 
    </configuration> 
    <executions> 
    <execution> 
     <id>unit-test</id> 
     <phase>test</phase> 
     <goals> 
     <goal>test</goal> 
     </goals> 
     <configuration> 
     <skip>false</skip> 
     <excludes> 
      <exclude>**/*IntegrationTest.java</exclude> 
     </excludes> 
     </configuration> 
     </execution> 
     <execution> 
     <id>integration-test</id> 
     <phase>integration-test</phase> 
     <goals> 
      <goal>test</goal> 
     </goals> 
     <configuration> 
      <skip>false</skip> 
      <enableAssertions>false</enableAssertions> 
      <includes> 
      <include>**/*IntegrationTest.java</include> 
      </includes> 
      <systemPropertyVariables> 
      <integration>${integration}</integration> 
      </systemPropertyVariables> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 
+6

이 답변은 failsafe 플러그인을 surefire 플러그인으로 대체하고 있습니다. – Andrew

1

:

내 안전 장치 플러그인으로 구성되어 있습니다. 페일 세이프 플러그인 문서 failsafe:integration-testfailsafe:verify 목표를 그 단계에 바인딩됩니다, 그래서 failsafe:integration-test에 추가 호출이 필요합니다 생각하지 않습니다에 따르면. 그러나 고 말했다

, 나는 페일 세이프 플러그인 문서를 신뢰 모르겠어요. 올해 초 누군가를 위해 나는 answered a similar question입니다. 결국 그는 각 목표를 올바른 단계에 묶어야했고, 그 다음에 안전 장치가 예상대로 작동한다는 것을 알게되었습니다. 총에 맞을만한 가치가 있을지도 모릅니다.

+0

해결책을 찾았습니다. 통합 테스트에 maven-surefire-plugin을 사용할 수 있습니다. – Fawi

7

Andrew가 지적한 것처럼 올바른 해결책은 의도 된대로 안전 장치를 사용하는 것입니다. 통합 테스트 목표는 빌드를 실패하지 않도록 특별히 설계되었습니다. 당신이 빌드를 실패 할 경우, mvn verify 또는

+1

답변에 동의합니다. it-test 목표는 의도적으로 실패하지 않습니다. "내 목표는 달랐으며, 소프트웨어의 독창적 인 부분을 만들고 싶었고 컨피규레이션 개념보다는 컨벤션 개념을 선호했다." Maven 기사의 역사에서 Jason van Zyl이 인용 한 내용. 해킹을하기보다는 협약을 따르는 것이 좋습니다. – NewUser

+1

나는 종종 메이븐 저자의 의도가 직접 온전한 사람이 그것을 사용하려고 시도 할 수있는 방법을 반박 것을 찾을 수 있습니다. – cbmanica