태깅과 필터링

최준호·2022년 7월 5일
0

JUnit5

목록 보기
4/4
post-thumbnail

@Tag

tag를 사용하여 각 테스트를 구분하여 테스트를 진행할 수 있다.

public class TagTest {
    @Test
    @Tag(value = "test1")
    void tag1(){
        System.out.println("test1");
    }

    @Test
    @Tag(value = "test2")
    void tag2(){
        System.out.println("test2");
    }
}

intellij에서는 다음 코드를 테스트별로 실행하기 위해서 환경변수를 잡아주면 된다. 그런데 내 intellij 버전에서는 해당 부분을 못 찾겠다...

그래서 터미널에서 실행시키는 방법에 대해 알아보자. 어차피 실제 사용은 대부분 터미널로 설정하고 사용하는게 보편적이니까.

pom.xml 설정

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    ...

    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <groups>test1</groups>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>ci</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <groups>test1 | test2</groups>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>

기존의 pom에 profiles 태그를 추가하여 다음과 같이 작성한다. 길지만 내용을 보면 default profile일 경우 test1의 태그를 실행시키고 ci profile을 선택할 경우 test1과 test2를 실행시킨다는 의미이다. 실제로 확인해보자.

mvnw test

로 실행했을 경우

test1 태그만 실행된것을 확인할 수 있고

mvnw test -P ci

입력했을 경우

test1 test2가 실행된 것을 확인할 수 있다.

테스트를 진행하면 로컬인지 테스트인지 실서버인지에 따라 테스트를 다르게 진행해야하는 경우나 실행하지 말아야하는 경우가 존재하는데 그럴때 @Tag를 통해 구분해서 사용하는 것은 좋은 방법이 될거 같다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글