在JUnit 5中将枚举值用作标签

时间:2019-01-23 22:57:19

标签: junit enums tags junit5 junit-jupiter

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

我有一个顾虑。标签值仅仅是字符串。那意味着错别字可能发生。

➥是否可以使用我定义的枚举中的值来获取标签行为?

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

1 个答案:

答案 0 :(得分:2)

元注释

使用Java annotations而不是Java enums

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

按照您在“问题”中的要求,编译器会检查元注释,以确保值有效。

请参见manual on Meta-Annotations。并在this slide的YouTube视频中观看Marc Philipp

示例

声明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() { … }