파란하늘의 지식창고
반응형

2019-09-19에 STS 4.4.0 이 릴리즈 되어 사용해보았다.

Junit 5 실행 시 다음과 같은 에러가 발생했다.

java.lang.NoClassDefFoundError: org/junit/platform/commons/PreconditionViolationException
	at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createFilteredTest(JUnit5TestLoader.java:70)
	at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createTest(JUnit5TestLoader.java:64)
	at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.loadTests(JUnit5TestLoader.java:53)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.commons.PreconditionViolationException
	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)
	... 7 more

해당 에러가 발생한 지점은 STS의 plugins/org.eclipse.jdt.junit5.runtime_1.0.600.v20190610-0439.jar 에서 junit 5을 실행할 때 org/junit/platform/commons/PreconditionViolationException 파일이 없어서 나는 에러이다.
해당 Exception 클래스는 junit-platform-commons 1.5.0 이후 추가된 클래스이다. (원래는 org/junit/platform/commons/util/PreconditionViolationException 위치에 있었다.)

Spring boot 2.1.8까지 바라보는 junit5 pom버전은 5.3.2 이고 해당 버전까지는 junit-platform-commons 1.3.2를 바라보고 있다.
따라서 STS 4.4.0에서 junit 5를 쓰는 경우 Spring boot가 제공하는 버전을 그대로 사용하면 IDE가 위와 같은 오류를 뱉게 된다.
Spring boot 사용 프로젝트의 pom.xml의 properties에 다음 한 줄 추가해서 쓰면 된다.

<properties>
	<junit-jupiter.version>5.5.2</junit-jupiter.version>
</properties>


Spring Boot 2.2.0이 릴리즈 되면 위 버전이 기본 설정되기 때문에 해당 문제가 발생하지 않는다.

반응형
profile

파란하늘의 지식창고

@Bluesky_

내용이 유익했다면 광고 배너를 클릭 해주세요