-
태깅과 필터링테스트/Junit5 2021. 2. 2. 15:59
테스트 태깅이란
테스트 그룹을 만들고 원하는 테스트 그룹만 테스트를 실행할 수 있는 방법이다.
즉 어떤 테스트는 단위 테스트인지, 통합 테스트인지 구분하거나 실행시간 등 여러가지 조건을 생각해서 실행한 테스트 그룹에 태그를 붙일 수 있다.
@Tag
- 에너테이션을 사용하여 태스트를 그룹화 시킬 수 있다.
- 하나의 테스트 메소드에 여러 태그도 사용 가능하다.
이 글에서 태깅과 필터링 하는 방법을 Intellij, maven build 두 가지로 설명하고자 한다.
예제1. Intellij에서 태깅및 필터링
@DisplayName("스터디 클레스") class StudyTest { @Test @DisplayName("스터디 만들기☺️") @Tag("fast") //로컬환경에서 void create_new_study_test() { String test_env = System.getenv("TEST_ENV"); //환경변수를 받환 System.out.println(test_env); } @Test @Tag("slow") //원격환경에서 void create_again_study_test(){ System.out.println("다른 테스트 "); } }
만약 fast란 이름의 태그 테스트는 실행시간이 빠르다는 가정을 하고 로컬환경에서 실행시킨다고 가정하자. 마찬가지로 slow는 느리기 때문에 속도를 낼 수 있는 환경에서만 실행한다고 가정하자. 우리는 로컬 환경에서 실험하기 때문에 fast그룹만 테스트 하고 싶다는 걸 인식하고 보자.
하지만 태그를 지정해도, Junit5에선 클래스 단위로 테스트를 실행하기 때문에 그전과 같이 모든 테스트가 실행된다. 하지만 Tag이름에 따라 즉, fast태그의 테스트만 실행하고 싶으면 다음과 같이 설정한다.
Intellij 우측상단 -> Edit Configurations ->
class로 설정된 것은 Test Kind로 기본적으로 인텔리제이에서 설정된 값이다 이 값을 Tag로 바꾸어주고 그룹값을 fast로 입력한다.
이렇게 하면 특정한 태그로 테스트 필터링이 적용되어 fast 태그만 실행해 다음과 같은 값이 나온다.
예제2. 메이븐을 이용한 필터링 방법
먼저 profile태그를 사용하려고 하는데 그 이유에 대해서 잠깐 얘기해보겠다.
profile 태그는 메이븐의 이식성(portability)을 제공하고자 하는 태그로 <id>태그로 profile각각을 인식하고 해당하는 pulgin이나 프로퍼티 를 설정할 수 있다. -> 이렇게 되면 기존 소스코드 수정 없이도 다양한 환경에서 빌드할 수 있게된다.
따라서 본 글에선 profile태그에서 빌드 환경에따라 실행 하고자 하는 id를 설정하고 해당 id가 가지는 설정을 통해 테스트 그룹을 실행하고자 한다.
필터링이 적용 되지 않는것을 알 수 있다.
pom.xml에서 다음과 같이 설정하자. -> 다른 환경에서 다른 테스트를 하기 위해서
<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> </profiles>
이렇게 하면 메이븐 빌드를 할때, 별도의 프로파일 id없이도 default로 fast 태그를 필터해서 테스트한다.
<activeByDefault>태그를 사용해서 프로젝트가 빌드 될 때 자동으로 해당 profile에 설정된 fast태그를 필터링한다.
만약 다른 환경에서 slow와 fast 테스트를 실행하고 싶다면 다음과 같이 설정한다.
<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>slow | fast</groups> </configuration> </plugin> </plugins> </build> </profile> </profiles>
터미널 명령어는 다음과 같다.
./mvnw test -P ci
2개(slow,fast 태그)의 테스트가 실행되는 것을 알 수 있다.
'테스트 > Junit5' 카테고리의 다른 글
테스트 반복하기 (0) 2021.02.02 커스텀 태그 (0) 2021.02.02 조건에 따라 테스트 실행하기 (0) 2021.02.02 Assertion API (0) 2021.01.28 테스트 이름 표시하기 (0) 2021.01.28