【问题标题】:JUnit 5 Jupiter tags using extension使用扩展的 JUnit 5 Jupiter 标签
【发布时间】:2019-04-15 08:58:22
【问题描述】:

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

只是为了说明(在 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 {

    } 

【问题讨论】:

    标签: junit5 junit5-extension-model


    【解决方案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/#writing-tests-meta-annotations

    【讨论】:

    • 我喜欢你的建议,我想它比在扩展中静态设置标签更灵活和可组合
    猜你喜欢
    • 2019-06-08
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2016-12-29
    • 2020-10-09
    相关资源
    最近更新 更多