2016-05-01 5 views
29

Я написал простой метод испытания с JUnit 5:Surefire не подбирая JUnit 5 тестов

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

Но когда я бегу mvn test, я получил:

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

Каким-то образом, безошибочный не узнайте, что тестовый класс. Моя pom.xml выглядит следующим образом:

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

Любая идея, как сделать эту работу?

+1

Прямо сейчас вы должны использовать специальную реализацию верного плагина. Проверьте примеры команды junit [здесь] (https://github.com/junit-team/junit5-samples/blob/master/junit5-maven-consumer/pom.xml) – jah

+1

Вопрос основан на устаревшей версии но [этот ответ] (http://stackoverflow.com/a/36970518/2525313) основан на текущей (по состоянию на декабрь 2016 года). – Nicolai

+0

@Nicolai Спасибо за обновление ответа. В любом случае, я был бы признателен за ваше редактирование по вопросу, если у вас есть время. –

ответ

47

maven-surefire-plugin, на сегодняшний день, not have full support of JUnit 5. Существует открытая проблема с добавлением этой поддержки в SUREFIRE-1206.

Таким образом, вам необходимо использовать custom provider. Команда JUnit уже разработана; от user guide, вам нужно добавить junit-platform-surefire-provider поставщика и TestEngine реализации для нового 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> 

Кроме того, не забудьте объявить junit-jupiter-api зависимости с объемом test:

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

Стоит отметить, что в настоящий момент surefire 2.20.1 не работает с провайдером junit 5, таким образом, 2.19.1, используемый в выборке, остается в силе, несмотря на прошедший год. – splatch

+1

Спасибо @splatch, вы спасли мой день ;-) – dSebastien

+1

Потянул мои волосы за этот тоже, спасибо @splatch – RedShift

0

Обновления до maven-surefire-plugin:2.20 запускает тесты Junit5 без проблем.

Но я использую версию M6 на Junit5.

+0

Не так просто (по крайней мере в данный момент). См. [Руководство пользователя JUnit 5] (http://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven) – FrVaBe

+0

@FrVaBe странно, его работы отлично работают на моей версии m6. – LazerBanana

+0

surefire-2.20 + junit-5.0.2 тест ok – dragon

0

Простейшим способом до сегодняшнего дня:

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

Кроме того, в случае, если вы используя Spring. Вам нужна только эта дополнительная библиотека, если вы хотите использовать JUnit 5 в Spring 4. Spring 5 поддерживает JUnit 5 из коробки, в целом с плагином surefire.

Смежные вопросы