Используйте значения перечисления в качестве тега в 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() { … }