2013-05-05 15 views
16

Ok- ich habe S/O und viele andere gekämmt, und habe alle anderen verwandten Pfosten gefunden und alle besagten Vorschläge gefolgt, aber am Ende überspringt Failsafe meine Tests.Maven fail-safe führt Tests nicht aus

Mein JUnit-Test ist hier: MyModule/src/main/test/java/ClientAccessIT.java

ich todsicher bin Skipping, weil es keine Unit-Tests in diesem Modul sind:

<!-- POM snippet --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <skip>true</skip> 
    </configuration> 
</plugin> 

Und ich versuche, Integrationstests mit sicherer auszuführen:

<!-- POM snippet --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>run-tests</id> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Als ich: mvn überprüfen

Ich sehe dies:

[INFO] --- maven-failsafe-plugin:2.14.1:integration-test (run-tests) @ rest-services-test --- 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

die letzten 4 1/2 Stunden damit verbracht, Scheuern, geschätzt helfen. Die einzige andere Sache, die vielleicht erwähnenswert ist, ist, dass ich Ladung aufstelle und einen Tomcat-Container abreiße. Sieht jemand das grelle Problem?

D

Antwort

13

Sie benötigen eine Testklasse umbenennen.

Sie können die Namen finden das Plugin für in the documentation sucht standardmäßig, wie @acdcjunior wies darauf hin:

Standardmäßig wird die Failsafe-Plugin enthält automatisch alle Testklassen mit den folgenden Wildcards:

  • "**/IT*.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "IT" beginnen.
  • "**/*IT.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "IT" enden.
  • "**/*ITCase.java" - enthält alle Unterverzeichnisse und alle Java-Dateinamen, die mit "ITCase" enden.
  • +3

    Das scheint nicht wahr zu sein: http://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion.html - es besagt, dass die Standardmuster '**/IT * .java' sind , **/* IT.java', '**/* ITCase.java'. – acdcjunior

    +1

    @acdcjunior prügel mich dazu; Hier ist ein direkter Link zu der entsprechenden Dokumentationsseite: https://maven.apache.org/surefire/maven-failsafe-plugin/integration-test-mojo.html#includes – kryger

    +0

    "**/* IT.java" - beinhaltet alle seiner Unterverzeichnisse und aller Java-Dateinamen, die mit "IT" enden. Würde ClientAccessIT.java nicht die Voraussetzungen für dieses Muster erfüllen? –

    8

    Ich hatte ein ähnliches Problem. Wenn keine Testklassen nach target/test-class kompiliert sind, überprüfen Sie Ihre pom-Datei und vergewissern Sie sich, dass die Verpackung nicht "pom" ist.

    +0

    Danke. Das war das Problem für mich. Ganz und gar nicht offensichtlich! –

    5

    Ich hatte auch ein ähnliches Problem, aber das Verpackungselement musste "pom" sein. Stellen Sie sicher, dass Ihre Test-Quelldateien werden zusammengestellt und zu den .../target/Test-Klassen-Ordner mit der Maven-Compiler-Plugin:

     <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <version>${maven.compiler.version}</version> 
          <executions> 
           <execution> 
            <phase>test-compile</phase> 
            <goals> 
             <goal>testCompile</goal> 
            </goals> 
           </execution> 
          </executions> 
         </plugin> 
    
    +0

    Seltsamerweise war meine Verpackung Glas, aber Testklassen wurden nicht kompiliert. Vielen Dank. –

    +0

    Das war mein Problem auch, sobald ich Compiler-Plugin Integrationstests einleitete funktioniert! – Leon

    5

    Für Multi-Modul-Projekte, das Kind Projekt muss haben Das Plug-in wurde wie folgt deklariert:

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

    Version erbt von Parent Pom. Ohne das oben definierte, wird das Plugin in Elternpom allein nicht funktionieren.

    +0

    Das war die Lösung für mich. Failsafe wurde im übergeordneten POM definiert. – Amoeba

    5

    Ihre Tests befinden sich nicht im Standardverzeichnis der Testquellen src/test/java.Siehe:

    https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

    MyModule/src/main/test/java/ClientAccessIT.java

    sein sollte:

    MyModule/src/test/java/ClientAccessIT.java

    Sie könnten auch Ihre Pom-Datei aktualisieren (wenn Sie wirklich wollen, dass die Tests in main leben):

    <build> 
        <testSources> 
         <testSource> 
          <directory>src/main/test</directory> 
         </testSource> 
        </testSources> 
    </build> 
    
    Verwandte Themen