0

Ich habe ein Maven-Projekt, das einige Selenium-basierte Integrationstests in einem Paket namens Sit ausführen. Ich habe das Failsafe-Plugin so konfiguriert, dass es Testdateien in das Paket aufnimmt, z. <include>sit/**/*Test.java</include>.Maven Krieg Verpackung übersprungen, bevor Tests ausgeführt werden

Ich versuche mvn clean install zu starten, und wenn es die Tests startet, habe ich bemerkt, dass es das maven-war-plugin nicht wirklich ausgeführt hat, d. H. Es nicht in einen Krieg verpackt hat, bevor die Tests ausgeführt wurden. Wenn ich jedoch mvn clean install -Dmaven.test.skip=true ausführen, dann verpackt es den Krieg erfolgreich. (Ich habe auch die Fracht-Plugin konfiguriert, um den Krieg zu implementieren, die ist, wie ich bemerkte, dass es ein Problem, da es einen nicht existierenden Krieg einzusetzen ausfällt)

Die Struktur meiner pom ist ähnlich wie die unten

<project ...> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>a</groupId> 
    <artifactId>a</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <dependencies> 
     ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.18.1</version> 

       <configuration> 
        <includes> 
         <include>sit/**/*Test.java</include> 
        </includes> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions>    
      </plugin> 
     </plugins> 
    </build> 
</project> 

Irgendwelche Ideen, warum es nicht das Kriegs-Plugin ohne Einstellung -Dmaven.test.skip=true läuft?

Es tut in beiden Szenarien die Klassendateien erstellen

Antwort

1

Ok es das Problem scheint wurde Maven-todsichere versuchte, die Integrationstests als Unit-Tests zu laufen, also müssen wir explizit die Integrationstests von surefires Unit-Tests ausschließen

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    ... 
    <configuration> 
     <excludes> 
      <exclude>sit/**/*Test.java</exclude> 
     </excludes> 
    </configuration> 
</plugin> 
2

Versuchen Sie, Ihre Testklassen für Integrationstests umbenennen mit einem *IT.java Suffix (oder Präfix ...) zu sein, da dies die Konvention für Tests von maven-failsafe-plugin ausgeführt werden soll.

Die *Test.java ist eine andere Konvention für die Durchführung der Tests von maven-surefire-plugin.

Also keine Notwendigkeit, sie auszuschließen, nur umbenennen.

Verwandte Themen