테스트 코드 태깅과 필터링

Date:     Updated:

카테고리:

태그:

인프런에 있는 백기선 님의 더 자바, 애플리케이션을 테스트하는 다양한 방법 강의를 듣고 정리한 내용 입니다. 😀
🌜 [더 자바, 애플리케이션을 테스트하는 다양한 방법]강의 들으러 가기!

@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 설정)

  1. Edit Configurations 클릭
    img01

  2. Class 부분에서 Tags 선택 및 실행할 태그 이름 입력
    img02

  3. 아래와 같이 이제 fast태그가 붙은 테스트만 실행할 수 있다.
    img03

🔔 두 번째 방법 (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를 진행해 보자.

img04
img05

img06
img07

테스트 결과 의도한 대로 동작하는걸 확인할 수 있다.


맨 위로 이동하기

JUnit 카테고리 내 다른 글 보러가기

댓글 남기기