JUnit 5 тегов Юпитера с использованием расширения
Все мои тесты БД снабжены DbExtension
расширение. Я хочу также пометить эти тесты, чтобы я мог запускать их отдельно в CI. Есть ли что-нибудь, что я могу добавить к классу расширения, чтобы он отмечал все тесты расширения?
просто чтобы проиллюстрировать (в котлине):
class DatabaseExtension : ParameterResolver, AfterEachCallback {
//setup connection
}
@ExtendWith(DatabaseExtension::class)
@Tag("db) //Can we have this tag in the extension class instead of each test
class MyDbTest {
}
1 ответ
Решение
Не в / по расширению, но это было бы изящной особенностью. Не возражаете против открытия запроса на https://github.com/junit-team/junit5/issues/new/choose?
Вы можете создать свою собственную составную аннотацию. Что-то вроде следующего:
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;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(DatabaseExtension.class)
@Tag("db")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Databased {}
Использование:
@Databased
class MyDbTest {}
См. https://junit.org/junit5/docs/current/user-guide/ для получения более подробной информации.