2012-09-05 6 views
11

Ich möchte mit maven-failsafe-plugin einige Integrationstests durchführen. Wenn ein Test fehlschlägt, möchte ich, dass Maven den Build nicht schafft und nicht ERFOLG ERFOLGT.maven-failsafe-plugin Fehler und BUILD SUCCESS?

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


wie kann ich es so konfigurieren, dass Erfolg nicht bauen?

Meine Failsafe-Plugin ist so konfiguriert, wie:

<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

Welche Version von Maven-Failsafe-Plugin verwenden Sie? Welche Maven-Version? Wie hast du mvn angerufen, um Integrationstests durchzuführen? – khmarbaise

+2

Siehe [diese Mail-Thread] (http://maven.40175.n5.nabble.com/Failing-a-build-with-maven-failsafe-plugin-td3199308.html) auf "Maven - Benutzer". –

+0

MAVEN CALL: mvn sauber installieren -P Gläser failsafe: integration-test -e 2.12 MAVEN 3.16 – Fawi

Antwort

1

Lösung.

<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

Diese Antwort ersetzt das Failsafe-Plugin durch das todsichere Plugin. – Andrew

1

Da Sie mvn clean install beide integration-test und verify Phasen ausgeführt werden sollen Ausführung werden. Laut den Failsafe-Plugin-Dokumenten sind die Ziele failsafe:integration-test und failsafe:verify an diese Phasen gebunden, daher glaube ich nicht, dass der zusätzliche Anruf an failsafe:integration-test erforderlich ist.

Das sagte jedoch, ich bin nicht sicher, dass ich die failsafe plugin Dokumentation vertraue. I answered a similar question für jemanden früher dieses Jahr. Es stellte sich heraus, dass er jedes Ziel explizit an die richtige Phase binden musste, und dann funktionierte Failsafe wie erwartet. Könnte einen Versuch wert sein.

+0

Ich habe eine Lösung gefunden, ich kann maven-surefire-plugin für meine Integrationstests verwenden. – Fawi

7

Wie Andrew darauf hingewiesen hat, ist die richtige Lösung, Failsafe wie vorgesehen zu verwenden. Das Ziel des Integrationstests ist speziell darauf ausgerichtet, den Build nicht zu beeinträchtigen. Wenn Sie die Erstellung abbrechen möchten, rufen Sie mvn verify oder mvn failsafe:verify

+1

Ich stimme Ihrer Antwort zu. Das It-Test-Ziel ist durch Design nicht fehlgeschlagen. "Meine Ziele waren anders und ich wollte eine eigensinnige Software entwickeln, und ich bevorzugte den Begriff der Konvention gegenüber der Konfiguration." wie von Jason van Zyl in der Geschichte des Maven-Artikels zitiert. Es ist immer gut, den Konventionen zu folgen, anstatt herumzuhacken, um Dinge zu tun, für die es nicht gedacht ist. – NewUser

+1

Ich finde oft, dass die Absichten der Maven-Autoren scheinen direkt zu widersprechen, wie ein vernünftiger Mensch versuchen könnte, es zu verwenden. – cbmanica