Могу ли я создать пользовательскую аннотацию JUnit 5 @Defect ("Ticket-ID") и сопоставить ее с @Tag ("Ticket-ID") - PullRequest
2 голосов
/ 06 февраля 2020

Я хочу знать, как добавить параметр в аннотацию, а затем использовать этот параметр для составления аннотации.

В качестве простого примера, предположим, что я хочу определить @Defect(<Ticket-ID>). Помимо прочего, эта аннотация добавит @Tag(<Ticket-Id>).

Могу ли я это сделать? Если да, то как будет выглядеть код?

1 Ответ

0 голосов
/ 17 февраля 2020

Я думаю, что вы не можете отобразить @Defect () на @Tag (), также не вижу смысла в этом. Вы бы только меняли имя тега. Что вы можете сделать, это создать интерфейс для сопоставления @Tag («Дефект»), а затем добавить к нему значение в качестве параметра:

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

Затем вы можете использовать его следующим образом:

@Defect("JiraIssue-1234");

Вы также можете получить значение, которое вы передаете в качестве параметра, например:

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