테스트 코드가 늘어날수록 테스트 수행 시간이 길어지고 있어서 테스트들을 병렬로 수행하기로 했다.
1. junit-platform.properties 파일 생성
우선 resources 폴더 아래에 junit-platform.properties 파일을 생성한다.
병렬 테스트를 위한 옵션으로 다음과 같이 지정해줄 수 있다. 하나씩 살펴보자
junit.jupiter.execution.parallel.enabled=true
junit.jupiter.execution.parallel.mode.default=CONCURRENT
junit.jupiter.execution.parallel.config.strategy=fixed
junit.jupiter.execution.parallel.config.fixed.parallelism=4
- junit.jupiter.execution.parallel.enabled : 병렬 실행을 사용하기 위해서 enabled를 true로 설정해준다.
- junit.jupiter.execution.parallel.mode.default : 병렬 실행 모드를 지정한다.
- junit.jupiter.execution.parallel.config.strategy : 병렬 수행 전략을 선택할 수 있다.
- dynamic : 사용 가능한 프로세서 코어수에 junit.jupiter.execution.parallel.config.dynamic.factor 구성 매개변수를 곱한 값을 기반으로 원하는 병렬도를 계산한다. (기본값은 1).
- fixed : junit.jupiter.execution.parallel.config.fixed.parallelism에 설정한 값으로 병렬 처리한다. 4로 설정하면 총 4개의 테스트가 동시에 수행된다고 생각하면 된다.
- junit.jupiter.execution.parallel.config.fixed.parallelism : 위의 strategy 설명에 써놓은거처럼 설정한 값으로 병렬 처리를 수행한다.
참고로 "junit.jupiter.execution.parallel.enabled=true" 옵션만 true로 설정 후 병렬로 테스트할 클래스에 @Execution(ExecutionMode.CONCURRENT)을 붙여서, 어노테이션을 붙인 클래스만 병렬로 수행할 수 있게도 구성할 수 있다.
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.parallel.Execution;
import org.junit.jupiter.api.parallel.ExecutionMode;
@Execution(ExecutionMode.CONCURRENT)
public class ParrallelTest {
@Test
@DisplayName("병렬 테스트 1")
public void test1() throws Exception {
Thread.sleep(4000);
}
@Test
@DisplayName("병렬 테스트 2")
public void test2() throws Exception {
Thread.sleep(4000);
}
@Test
@DisplayName("병렬 테스트 3")
public void test3() throws Exception {
Thread.sleep(4000);
}
}
자세한 내용은 공식 가이드를 참고하면 좋을꺼 같다.https://junit.org/junit5/docs/snapshot/user-guide/index.html#writing-tests-parallel-execution
'Test' 카테고리의 다른 글
코드 커버리지 적용(3) - 커버리지 제외 (0) | 2021.11.30 |
---|---|
코드 커버리지 적용(2) - JaCoCo (0) | 2021.11.30 |
코드 커버리지 적용(1) - 커버리지란? (0) | 2021.11.30 |
Mockito && 스프링부트 테스트 관련 어노테이션 정리 (0) | 2021.11.17 |
무엇을 어떻게 테스트할 것인가 (feat : 권용근님) (0) | 2021.11.17 |