【问题标题】:Use enum values as a Tag in JUnit 5在 JUnit 5 中使用枚举值作为标记
【发布时间】:2019-01-23 22:57:18
【问题描述】:

我喜欢 JUnit 5 中的新 @Tag 功能 shown in the manual

我有一个担心。标签值只是字符串。这意味着可能会出现拼写错误。

➥ 是否有某种方法可以获取标签行为,但使用我定义的枚举中的值?

或者我可以依靠编译器强制执行有效值的其他方式?

【问题讨论】:

    标签: junit enums tags junit5 junit-jupiter


    【解决方案1】:

    元注释

    使用Java annotations 而不是Java enums

    您可以定义自己的注释来包装 JUnit @Tag 注释。因此,您只需编写一次标记值的字符串,然后在整个测试套件中应用该自定义注释。

    编译器会检查元注释以确保值有效,正如您在问题中所要求的那样。

    请参阅manual on Meta-Annotations。并在Marc Philipp 的 YouTube 演讲视频中查看 this slide

    示例

    声明your own annotation type

    @Target({ ElementType.TYPE , ElementType.METHOD })
    @Retention( RetentionPolicy.RUNTIME )
    @Tag( "fast" )
    @Test
    public @interface FastTest {}
    

    稍后,当您编写测试时,使用新的 @FastTest 注释进行注释。

    而不是这样写:

    @Tag( "fast" ) 
    @Test
    void someTest() { … }
    

    ……写这个:

    @FastTest
    void someTest() { … }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多