使用扩展的JUnit 5 Jupiter标签

时间:2019-04-15 08:58:23

标签: junit5 junit5-extension-model

我所有的数据库测试都带有自定义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 个答案:

答案 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