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/ для получения более подробной информации.

Другие вопросы по тегам