我所有的数据库测试都带有自定义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 {
}
答案 0 :(得分:4)
扩展名不存在/扩展名不多,但这将是一个很好的功能。您介意在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。