커스텀 태그

JUnit 이 사용하는 애노테이션들(@Test, @DisplayName … 등등)은 메타 애노테이션으로 사용할 수 있습니다.

무슨 말이냐면, 우리가 커스텀 애노테이션을 만들 때 @Test, @DisplayName … 등등을 사용하게 되면 동일한 기능이 적용된다는 뜻입니다.

즉, JUnit 5 애노테이션을 조합하여 커스텀 태그를 만들 수 있습니다.

<aside> ❗ meta-annotaiton ?


meta-annotation 은 다른 annation 에서도 사용되는 annotation 의 경우를 말하며  custom-annotation 을 생성할 때 주로 사용됩니다.

예를 들어, @Service 은 bean 으로 등록해주기 위해 @Component 을 내포하고 있는 형태로, 여기서 @Component 가 meta-annotation 입니다.

</aside>

예시 코드

커스텀 애노테이션

@Target(ElementType.METHOD) //...1
@Retention(RetentionPolicy.RUNTIME) //...2
@Tag("fast")
@Test
public @interface FastTest {
}
  1. @Target(ElementType.METHOD)
  2. @Retention(RetentionPolicy.RUNTIME)

FastTest 이라는 애노테이션을 여러개의 메타 에노테이션을 조합해서 만들었습니다.

동일하게 SlowTest 애노테이션도 만들어줍니다.

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Test
@Tag("slow")
public @interface SlowTest {
}