#maven #junit #maven-surefire-plugin
#maven #junit #maven-верный плагин
Вопрос:
Есть метод тестирования, аннотированный с помощью category:
public interface BVT {} //is placed in package net.test.categories, file name BVT.java
public class TestClass{
@Test
@Category(BVT.class)
public void someTest(){
System.out.println("smoke");
} }
Я использую Junit 4.12 и surefire 3.0.0-M3
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<forkCount>${threadCount}</forkCount>
<reuseForks>false</reuseForks>
<skip>false</skip>
<groups>${testGroup}</groups>
</configuration>
</plugin>
Если я попытаюсь запустить тест из категории BVT
mvn clean test -DtestGroup="net.test.categories.BVT"
Я получаю
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Понятия не имею, почему тест не был запущен / пропущен…
Использование созданного в профиле pom не помогло — он просто запускает все тесты.
Добавление этой зависимости runner также не помогает:
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>3.0.0-M3</version>
</dependency>
</dependencies>
Создание набора запускает необходимый тест, но я не хочу перечислять все необходимые классы в этом классе suite, просто хочу запустить определенную группу из командной строки
Комментарии:
1. Удалите зависимость surefire-junit47. Позвольте surefire-maven-plugin. решите сами.
2. @khmarbaise, ну, я попытался добавить, а затем удалил эту зависимость. Это не помогает
Ответ №1:
Из документации:
Вы можете использовать категории JUnit с помощью
groups
параметра.
Использование mvn -D...
задает системное свойство, а не параметр плагина.
Итак, вам нужно что-то вроде:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
...
<groups>${myGroup}</groups>
</configuration>
</plugin>
И запустите его с mvn ... -DmyGroup="net.test.categories.BVT"
Комментарии:
1. Это не помогает. Я уже пытался добавить <groups>net.test.categories.BVT</groups> непосредственно в pom.xml и это не сработало
2. @Roman В этом случае я бы сказал, что происходит что-то еще. Можете ли вы удалить все категории и затем запустить свой тест?
3. Я могу запускать тесты без категорий. Также я могу запускать тесты по категориям из наборов, но мне не нравится это решение.
Ответ №2:
Не нашел причину, но добавление раздела включения в конфигурацию surefire решило проблему.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<forkCount>${threadCount}</forkCount>
<reuseForks>false</reuseForks>
<skip>false</skip>
<groups>${testGroup}</groups>
<includes>
<include>*</include>
</includes>
</configuration>
</plugin>
Комментарии:
1. Если это решение, то ваши тестовые примеры не соответствуют соглашениям об именовании по умолчанию, описанным здесь maven.apache.org/surefire/maven-surefire-plugin/examples /…