Spring Boot 의 기본 junit4 대신 junit5(2019.7월 말 현재 최신버전인 junit 5.5.1 )를 쓰기 위해 설정하는 도중 만난 오류가 있어서 공유합니다.
개발 환경
IngelliJ IDEA
gradle 5.0
Spring Boot 2.1.0.RELEASE
Spring Boot 의 기본 junit4 대신 junit5(2019.7월 말 현재 최신버전인 junit 5.5.1 )를 쓰기 위해 설정하는 도중 만난 오류가 있어서 공유합니다.
Spring Boot 의 기본 junit4 버전 제외. (build.gradle)
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude module: 'junit'
}
junit5 lib 추가 (build.gradle, junit-jupiter-engine관련 lib)
testImplementation("org.junit.jupiter:junit-jupiter-api:5.5.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.5.1")
이 dependencies에 추가후 testcase를 돌리면 아래와 같은 오류가 났습니다.
7월 25, 2019 6:33:39 오후 org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.discovery.SelectorResolver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 8 more
junit5의 dependency를 살펴봅니다.
제가 추가한 lib 외에 junit-platform-* 이 dependency 관계가 있어서 추가된 걸 확인할 수 있는데,
문제가 되는 junit-platform에서 버전이 맞지 않아서 발생하는 오류인지 junit-platform-* lib를 강제로 현재 최신 버전인 1.5.1 으로 추가 설정해주었습니다.
junit-platform-commons:1.3.1 버전은 junit-jupiter-api:5.5.1 에 dependency가 있기 때문에 제외를 해줍니다.
testImplementation("org.junit.jupiter:junit-jupiter-api:5.5.1") {
exclude module:'junit-platform-commons'
}
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.5.1")
testRuntimeOnly("org.junit.platform:junit-platform-engine:1.5.1")
testRuntimeOnly("org.junit.platform:junit-platform-commons:1.5.1")
해결된 후 dependency 확인! 실패했던 Testcase도 잘 돌아갑니다.
'backend > Spring' 카테고리의 다른 글
[Spring] WebClient DataBufferLimitException WebFlux 오류 해결 (0) | 2022.04.10 |
---|---|
[SpringData JPA] query method predicate keywords - null이 아닌 빈값을 제외하고 싶을때 (0) | 2021.10.14 |
[Junit5] SpringBoot 2에 JUnit5 적용 (0) | 2019.08.22 |
[Spring] Lazy Initialization in Spring Boot 2.2 - 번역 (0) | 2019.07.16 |
[SpringSecurity] Authentication(인증) 관련 클래스와 처리 (0) | 2016.01.25 |
[Spring] @Autowired의 Before/After (2) | 2009.04.29 |
[Spring] 스프링에서 VelocityTools 환경설정 (2) | 2008.03.20 |
[Spring] 스프링 MVC를 이용한 웹 요청 처리 (4) | 2008.03.13 |