2016-05-01 8 views
29

schrieb ich eine einfache Testmethode mit JUnit 5:todsichere ist nicht richtig erfasst Junit 5 Tests

public class SimlpeTest { 
    @Test 
    @DisplayName("Some description") 
    void methodName() { 
     // Testing logic for subject under test 
    } 
} 

Aber wenn ich mvn test laufen, ich habe:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running SimlpeTest 
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec 

Results : 

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

Irgendwie todsichere tat es nicht erkenne diese Testklasse. Mein pom.xml wie folgt aussieht:

<properties> 
    <java.version>1.8</java.version> 
    <junit.version>5.0.0-SNAPSHOT</junit.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.junit</groupId> 
     <artifactId>junit5-api</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>snapshots-repo</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <updatePolicy>always</updatePolicy> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Jede Idee, wie diese Arbeit zu machen?

+1

Im Moment müssen Sie eine spezielle Implementierung des Surefire-Plugins verwenden. Überprüfen Sie die Beispiele des Junit-Teams [hier] (https://github.com/junit-team/junit5-samples/blob/master/junit5-maven-consumer/pom.xml) – jah

+1

Die Frage basiert auf einer veralteten Version aber [diese Antwort] (http://stackoverflow.com/a/36970518/2525313) basiert auf der aktuellen (Stand Dezember 2016). – Nicolai

+0

@Nicolai Danke für die Aktualisierung der Antwort. Wie auch immer, ich würde mich über Ihre Bearbeitung freuen, wenn Sie Zeit haben. –

Antwort

47

Die , ab heute, tut . Es gibt ein offenes Problem zum Hinzufügen dieser Unterstützung in SUREFIRE-1206.

Als solche müssen Sie eine custom provider verwenden. Einer wurde bereits vom JUnit-Team entwickelt; vom user guide, müssen Sie die junit-platform-surefire-provider Provider und die TestEngine Implementierung für die neue API hinzuzufügen:

<build> 
    <plugins>   
    <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <!-- latest version (2.20.1) does not work well with JUnit5 --> 
     <version>2.19.1</version> 
     <dependencies> 
     <dependency> 
      <groupId>org.junit.platform</groupId> 
      <artifactId>junit-platform-surefire-provider</artifactId> 
      <version>1.0.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.junit.jupiter</groupId> 
      <artifactId>junit-jupiter-engine</artifactId> 
      <version>5.0.3</version> 
     </dependency> 
     </dependencies> 
    </plugin> 
    </plugins> 
</build> 

auch sicher, dass die junit-jupiter-api Abhängigkeit mit einem Umfang von test zu erklären:

<dependencies> 
    <dependency> 
    <groupId>org.junit.jupiter</groupId> 
    <artifactId>junit-jupiter-api</artifactId> 
    <version>5.0.3</version> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 
+12

Wert zu beachten, dass in diesem Moment todsichere 2.20.1 nicht mit Junit 5 Anbieter funktioniert so 2.19.1 in Probe verwendet wird, ist trotz des vergangenen Jahres noch gültig. – splatch

+1

Danke @splatch, du hast meinen Tag gerettet ;-) – dSebastien

+1

zog mir auch dieses Haar über, danke @splatch – RedShift

0

Updating bis maven-surefire-plugin:2.20 läuft die Junit5 Tests ohne Probleme.

Aber ich verwende die M6 Version auf Junit5.

+0

Nicht so einfach (zumindest im Moment). Siehe [JUnit 5 User Guide] (http://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven) – FrVaBe

+0

@FrVaBe komisch, es funktioniert ganz gut bei mir mit der m6-Version. – LazerBanana

+0

todsichere-2.20 + junit-5.0.2 test ok – dragon

0

einfachste Weg, bis heute:

<plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <dependencies> 
      <dependency> 
       <groupId>org.junit.platform</groupId> 
       <artifactId>junit-platform-surefire-provider</artifactId> 
       <version>1.1.0</version> 
      </dependency> 
     </dependencies> 
    </plugin> 

Auch in dem Fall, wenn Sie mit Frühling. Sie benötigen diese zusätzliche Bibliothek nur, wenn Sie JUnit 5 auf Spring 4 verwenden möchten. Spring 5 unterstützt JUnit 5 standardmäßig mit dem todsicheren Plugin.