2. test instance lifecycle configuration
performance tuning
junit 5에서 테스트 실행 속도를 최적화하면 ci/cd 환경에서의 테스트 수행 시간을 줄여 개발 생산성을 높일 수 있다
1. parallel execution
junit 5는 기본적으로 테스트를 한 개씩 순차 실행하지만 병렬 실행을 활성화하거나 특정 테스트만 병렬 실행하면 여러 테스트를 동시에 실행할 수 있다
다만 병렬 실행에 따른 여러 문제(공유 자원 동기화 문제 등)가 발생할 가능성이 있기 때문에 이에 대한 대처를 적절히 해야 한다
2. test instance lifecycle configuration
junit 5는 각 테스트 메서드 실행할 때마다 새로운 테스트 인스턴스를 생성하는 것이 기본 동작이다
테스트 클래스에 하나의 인스턴스만 생성하도록 @TestInstance(Lifecycle.PER_CLASS)
어노테이션을 적용하여 성능을 개선할 수 있다
다만 테스트 케이스 별로 독립된 환경에서 테스트를 실행하지 않기 때문에 공유 필드에 대한 동기화 문제가 발생할 수 있다
3. gradle test task tuning
gradle의 test task를 병렬 실행하도록 설정하거나 테스트가 성공적으로 실행된 경우 테스트 결과를 캐싱하여 성능을 개선할 수 있다
tasks.withType<Test> {
useJUnitPlatform()
// cpu 코어 개수의 절반 만큼 병렬 실행
maxParallelForks = Runtime.getRuntime().availableProcessors() / 2
// 테스트가 성공적으로 실행된 경우 테스트 결과 캐싱
outputs.cacheIf { true }
}