В JUnit 5 вы можете объявить @Tag
для фильтрации тестов на уровне класса или метода; аналогично тестовым группам в TestNG или категориям в JUnit 4
Из Javadoc :
теги используются для фильтрации, какие тесты выполняются для данного теста
план. Например, команда разработчиков может пометить тесты такими значениями
как «быстрый», «медленный», «ci-сервер» и т. д., а затем предоставить список тегов для
использоваться для текущего плана испытаний, потенциально зависит от
текущая среда.
Например, вы можете объявить тестовый класс с "slow"
@Tag
, который будет унаследован для всех методов, и при необходимости переопределить его для некоторых методов:
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@Tag("slow")
public class FooTest{
//
@Test
void loadManyThings(){
...
}
@Test
void loadManyManyThings(){
...
}
@Test
@Tag("fast")
void loadFewThings(){
...
}
}
Вы можете применить ту же логику для других тестовых классов.
Таким образом, тестовые классы (и методы тоже) принадлежат определенному тегу.
В качестве хорошей практики вместо копирования и вставки @Tag("fast")
и @Tag("slow")
в тестовые классы можно создавать пользовательские составные аннотации.
Например:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("slow")
public @interface Slow {
}
и используйте его как:
@Test
@Slow
void slowProcessing(){
...
}
Чтобы включить или отключить тест, помеченный определенным тегом во время выполнения текста, вы можете положиться на документацию maven-surefire-plugin :
Чтобы включить теги или выражения тегов, используйте groups
.
Чтобы исключить теги или выражения тегов, используйте excludedGroups
.
Просто настройте в вашем pom.xml плагин в соответствии с вашими требованиями (пример документа):
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<groups>acceptance | !feature-a</groups>
<excludedGroups>integration, regression</excludedGroups>
</configuration>
</plugin>
</plugins>
</build>
Для справки документация цели теста не обновляется.