테스트 코드가 늘어날수록 테스트 수행 시간이 길어지고 있어서 테스트들을 병렬로 수행하기로 했다.
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
JUnit 5 User Guide
Although the JUnit Jupiter programming model and extension model will not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and cus
junit.org
'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 |