JUnit 5 Jupiter 标签使用扩展

JUnit 5 Jupiter tags using extension

我的所有数据库测试都使用自定义 DbExtension 扩展进行注释。我还想标记这些测试,这样我就可以在 CI 中单独 运行 它们。 我可以在扩展 class 上添加什么以便它标记所有扩展测试吗?

只是为了说明(在 kotlin 中):

    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 {

    } 

不是 at/by 扩展,但那将是一个很好的功能。您介意在 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/#writing-tests-meta-annotations