2016-05-01 46 views
29

ho scritto un semplice metodo di test con JUnit 5:Surefire non è in ripresa Junit 5 prove

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

Ma quando corro mvn test, ho ottenuto:

------------------------------------------------------- 
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 

In qualche modo, non ha fatto infallibile riconoscere quella classe di test. Il mio pom.xml assomiglia:

<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> 

Qualsiasi idea di come fare questo lavoro?

+1

In questo momento è necessario utilizzare un'implementazione speciale del plugin surefire. Controlla gli esempi del team junit [qui] (https://github.com/junit-team/junit5-samples/blob/master/junit5-maven-consumer/pom.xml) – jah

+1

La domanda è basata su una versione obsoleta ma [questa risposta] (http://stackoverflow.com/a/36970518/2525313) si basa su quella corrente (a dicembre 2016). – Nicolai

+0

@Nicolai Grazie per aver aggiornato la risposta. Ad ogni modo apprezzerei la tua modifica su domanda, se ne hai il tempo. –

risposta

47

Il maven-surefire-plugin, ad oggi, è not have full support of JUnit 5. C'è un problema aperto sull'aggiunta di questo supporto in SUREFIRE-1206.

Come tale, è necessario utilizzare uno custom provider. Uno è già stato sviluppato dal team di JUnit; dal user guide, è necessario aggiungere il provider junit-platform-surefire-provider e la TestEngine implementazione per la nuova API:

<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> 

Inoltre, essere sicuri di dichiarare la junit-jupiter-api dipendenze con un ambito di test:

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

Vale la pena notare che in questo momento surefire 2.20.1 non funziona con provider junit 5 quindi 2.19.1 utilizzato nel campione è ancora valido nonostante l'anno passato. – splatch

+1

Grazie @splatch, mi hai salvato la giornata ;-) – dSebastien

+1

Mi stavo prendendo in giro anche questo, grazie @splatch – RedShift

0

Aggiornamento a maven-surefire-plugin:2.20 esegue i test di Junit5 senza problemi.

Ma sto usando la versione M6 su Junit5.

+0

Non così semplice (almeno al momento). Vedi [JUnit 5 User Guide] (http://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven) – FrVaBe

+0

@FrVaBe strano funziona bene con il mio con la versione m6. – LazerBanana

+0

surefire-2.20 + junit-5.0.2 test ok – dragon

0

modo più semplice fino ad oggi:

<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> 

Inoltre, nel caso in cui se sei usando Spring. Hai solo bisogno di questa libreria aggiuntiva se vuoi usare JUnit 5 nella primavera 4. Spring 5 supporta JUnit 5 out of the box, insieme al plugin surefire.