JUnit 5 @Tag 어노테이션 활용, 커스텀 태그

Chori·2021년 11월 9일
1

JUnit 5

목록 보기
4/6
post-thumbnail

@Tag, 필터링

테스트 메소드에 태그를 추가하면 내가 원하는 환경에 맞춰 테스트를 실행할 수 있다.

만약 로컬 테스트개발서버 테스트를 구분하여 실행하야하는 메서드가 있다고 가정하자.
이 때 각각의 테스트 메서드에 로컬과 개발서버를 구분하는 태그를 설정해놓고 필터링을 하면
로컬 환경에서는 로컬 태그 메서드가, 개발서버 환경에서는 개발서버 태그 메서드가 실행이 된다.

@Tag("local")
void testLocal() {
	...테스트 코드
}

@Tag("dev")
void testDev() {
	...테스트 코드
}

위 코드 처럼 @Tag 어노테이션으로 태깅을 할 수 있다.
하지만 위 태그 설정만으로는 테스트를 필터링 할 수 없다.
필터링은 해당 어노테이션을 가진 테스트 메서드를 실행할 것이냐 아니냐를 구분하는데,
인텔리J가 아닌 이클립스 환경에서는 maven plugin으로 필터링 작업을 해야한다.
(인텔리J에서는 JUnit5 설정을 따로 할 수 있다)

pom.xml 파일에 아래 코드를 넣으면, 터미널에서 빌드하여 테스트를 확인 할 수 있다.

<profiles>
	<profile>
		<id>defoalt</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<build>
			<plugins>
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<configuration>
						<groups>fast</groups>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
	<profile>
		<id>ci</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<build>
			<plugins>
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<configuration>
						<groups>slow</groups>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
</profiles>

번거롭지만 이클립스 환경에서 @Tag 어노테이션을 사용하기 위해서는 위 방법을 사용해야 한다.


커스텀 태그

@Tag어노테이션에 이어서 해당 태그를 커스텀화하여 사용할 수 있다.

@Target(ElementType.METHOD) //메서드에서 사용할 것이라고 명시.
@Retention(RetentionPolicy.RUNTIME) //이 어노테이션을 사용한 코드가 런타임 될 동안까지 실행.
@Test	//메타 어노테이션
@Tag("fast")	//메타 어노테이션
public @interface FastTest { //다른 어노테이션을 조합해서 만든 어노테이션
}

어노테이션 파일을 생성하고, 어노테이션을 활용하여 커스텀 어노테이션을 만든다.
@Test@Tag를 사용하면 해당 어노테이션을 커스텀 태그로 사용할 수 있다.

@FastTest
void test() {
}

본 글는 백기선님의 더 자바, 애플리케이션을 테스트하는 다양한 방법을 수강하며 학습한 내용입니다.

profile
꾸준한 성장

0개의 댓글