首页 > 解决方案 > 我可以创建一个自定义 JUnit 5 注释 @Defect("Ticket-ID") 并将其映射到 @Tag("Ticket-ID")

问题描述

我想知道如何将参数添加到注释中,然后使用该参数来帮助编写注释。

作为一个简单的例子,假设我想定义@Defect(<Ticket-ID>). 除其他外,该注释将添加@Tag(<Ticket-Id>).

我可以这样做吗?如果是这样,代码会是什么样子?

标签: annotationsjunit5

解决方案


我认为你不能将@Defect() 映射到@Tag(),也看不到它的意义。您只会更改标签名称。您可以做的是,创建一个映射 @Tag("Defect") 的接口,然后添加一个值作为参数:

@Target({TYPE, METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Test
@Tag("Defect")
@interface Defect {
    int value();
}

然后你可以像这样使用它:

@Defect("JiraIssue-1234");

您还可以获取作为参数传递的值,例如:

AnnotationSupport.findAnnotation(_extensionContext.getElement(), Defect.class).get().value()

推荐阅读