1

我喜欢@TagJUnit 5 中的新功能,如手册中所示

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

➥ 有没有办法获取标签行为,但使用我定义的枚举中的值?

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

4

1 回答 1

3

元注释

使用Java 注释而不是Java 枚举

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

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

请参阅元注释手册并在Marc Philipp演讲的 YouTube 视频中查看这张幻灯片

例子

声明你自己的注解类型

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

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

而不是这样写:

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

……写这个:

@FastTest
void someTest() { … }
于 2019-01-23T23:15:55.473 回答