Используйте значения перечисления в качестве тега в JUnit 5

Мне нравится новый @Tag функция в JUnit 5, как показано в руководстве.

У меня есть одна проблема. Значения тега являются простыми строками. Это означает, что опечатки могут произойти.

➥ Есть ли какой-нибудь способ получить поведение тега, но используя значения из перечисления (я), которые я определяю?

Или каким-то другим образом я могу зависеть от компилятора для обеспечения допустимых значений?

1 ответ

Решение

Мета аннотации

Используйте аннотации Java, а не перечисления Java.

Вы можете определить свою собственную аннотацию, чтобы обернуть JUnit @Tag аннотаций. Таким образом, вам нужно написать строку значения вашего тега только один раз, а затем применить эту пользовательскую аннотацию ко всем наборам тестов.

Мета-аннотации проверяются компилятором на предмет правильности значений, как вы просили в своем Вопросе.

Смотрите руководство по метааннотациям. И посмотрите этот слайд на видео YouTube с выступлением Марка Филиппа.

пример

Объявите свой собственный тип аннотации.

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

Позже, когда вы пишете свои тесты, аннотируйте ваши новые @FastTest аннотаций.

Вместо того чтобы писать это:

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

… Напиши это:

@FastTest
void someTest() { … }
Другие вопросы по тегам