테스트 코드 태깅과 필터링
카테고리: JUnit
인프런에 있는 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 정리한 내용 입니다. 😀
🌜 [더 자바, 애플리케이션을 테스트하는 다양한 방법]강의 들으러 가기!
@Tag
annotation을 이용해서 테스트 코드를 필터링 하는 방법에 대해 알아보자.
🔔 필요한 상황
아래 예제와 같이 테스트가 2개 있다고 가정해보자.
fast_test는 실행시간이 얼마 걸리지 않는 테스트 이고, slow_test는 실행시간이 오래 걸리는 테스트이다.
예를 들어 로컬에서는 fast_test만 실행하고 ci서버에서는 전체 테스트를 실행하도록 하고 싶다면 어떻게 해야 하는지 알아보자.
@Test
@DisplayName("간단한 테스트")
@Tag("fast")
void fast_test() {
System.out.println("fast_test 실행");
}
@Test
@DisplayName("복잡한 테스트")
@Tag("slow")
void slow_test() {
System.out.println("slow_test 실행");
}
🔔 첫 번째 방법 (IntelliJ 설정)
-
Edit Configurations 클릭
-
Class 부분에서 Tags 선택 및 실행할 태그 이름 입력
-
아래와 같이 이제 fast태그가 붙은 테스트만 실행할 수 있다.
🔔 두 번째 방법 (Maven 설정)
이번엔 maven 설정을 이용해서 테스트 코드 필터링 작업을 해보자
<profiles>
<profile>
<id>default</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>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<!-- <configuration>-->
<!-- <groups>fast | slow</groups>-->
<!-- </configuration>-->
</plugin>
</plugins>
</build>
</profile>
</profiles>
여기서는 2개의 profile을 추가해 주었다.
따로 옵션 없이 테스트를 실행하면 fast 태그가 붙은 테스트가 실행되고, profile 옵션으로 id에 ci를 준 뒤, 실행하면 모든 테스트가 실행되도록 설정하였다.
configuration에서 groups에 필터링 할 태그를 여러개 설정해 줄 수도 있고, 생략하면 태그 구분없이 전체 테스트가 실행된다.
사용 가능한 태그 표현식은 여기를 참고하자.
그럼 이제 터미널에서 maven test를 진행해 보자.
테스트 결과 의도한 대로 동작하는걸 확인할 수 있다.
댓글 남기기