인프런 커뮤니티 질문&답변
테스트코드 junit5 java17
작성
·
5
0
plugins {
id 'java'
id 'org.springframework.boot' version '3.5.5'
id 'io.spring.dependency-management' version '1.1.7'
}안녕하세요 테스트 코드 진행중 가짜객체를 선언하기 위해 @mock를 사용하려는데 자바17과의 충돌?로 계속해서 에러가 발생하는 상황입니다..!
자바 버전 17에서 21로 변경, mockito 5.xx 최신 버전으로 변경해도 같은 에러에서 벗어나지못했습니다..
밑에는 전체 에러입니다.
ByteBuddy 버전도 올려서 빌드의존성 추가해봤는데도 안되네요
> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :compileTestJava
> Task :processTestResources NO-SOURCE
> Task :testClasses
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85)
at jdk.proxy3/jdk.proxy3.$Proxy16.isTypeMockable(Unknown Source)
at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:78)
at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:275)
at org.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:236)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:82)
at org.mockito.Mockito.mock(Mockito.java:2198)
at org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:79)
at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:28)
at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:25)
at org.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:44)
at org.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:72)
at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:62)
at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:47)
at org.mockito.MockitoAnnotations.openMocks(MockitoAnnotations.java:81)
at org.mockito.internal.framework.DefaultMockitoSession.<init>(DefaultMockitoSession.java:43)
at org.mockito.internal.session.DefaultMockitoSessionBuilder.startMocking(DefaultMockitoSessionBuilder.java:83)
at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:160)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105)
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49)
at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29)
at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26)
at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71)
at org.mockito.Mockito.<clinit>(Mockito.java:1777)
at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:156)
... 2 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103)
... 10 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker.
It appears as if your JDK does not supply a working agent attachment mechanism.
Java : 17
JVM vendor name : Oracle Corporation
JVM vendor version : 17.0.10+11-LTS-240
JVM name : Java HotSpot(TM) 64-Bit Server VM
JVM version : 17.0.10+11-LTS-240
JVM info : mixed mode, sharing
OS name : Windows 10
OS version : 10.0
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:275)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)
... 13 more
Caused by: java.lang.IllegalArgumentException
at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method)
at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:175)
... 14 more
Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker
java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105)
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75)
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49)
at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29)
at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26)
at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71)
at org.mockito.Mockito.<clinit>(Mockito.java:1777)
at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:156)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103)
... 10 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker.
It appears as if your JDK does not supply a working agent attachment mechanism.
Java : 17
JVM vendor name : Oracle Corporation
JVM vendor version : 17.0.10+11-LTS-240
JVM name : Java HotSpot(TM) 64-Bit Server VM
JVM version : 17.0.10+11-LTS-240
JVM info : mixed mode, sharing
OS name : Windows 10
OS version : 10.0
at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:275)
at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)
... 13 more
Caused by: java.lang.IllegalArgumentException
at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method)
at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:175)
... 14 more
> Task :test
AuthServiceTest > asd() FAILED
java.lang.IllegalStateException at PluginLoader.java:85
Caused by: java.lang.IllegalStateException at DefaultMockitoPlugins.java:105
Caused by: java.lang.reflect.InvocationTargetException at Constructor.java:499
Caused by: org.mockito.exceptions.base.MockitoInitializationException at InlineDelegateByteBuddyMockMaker.java:275
Caused by: java.lang.IllegalArgumentException at InstrumentationImpl.java:-2
1 test completed, 1 failed
> Task :test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///C:/%EC%8A%A4%ED%94%84%EB%A7%81/Artrip/build/reports/tests/test/index.html
* Try:
> Run with --scan to get full insights.
BUILD FAILED in 12s
4 actionable tasks: 2 executed, 2 up-to-date
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
오키님, 테스트 코드에서 @Mock를 사용할 때 발생하는 문제에 대해 말씀해주셨네요. 특히 자바 17과 관련된 문제로 보고 계신 것 같습니다.
주어진 에러 메시지를 기반으로 몇 가지 해결책을 제안 드립니다:
- MockMaker 설정 확인:
mockito-extensions디렉토리 안에org.mockito.plugins.MockMaker파일이 존재하는지 확인해 주십시오. 이 파일의 내용은 “mock-maker-inline”이어야 합니다.
mockito-extensions/
└─ org.mockito.plugins.MockMaker (내용: mock-maker-inline)
ByteBuddy 버전 확인: 이미 ByteBuddy의 버전을 올려보신 것 같은데, 가급적 최신 버전을 사용하고 있는지 확인해 주세요.
JDK 버전 확인: 기본적으로 자바 17을 사용하고 계시지만, 빌드 환경이나 IDE에서 정확히 이 버전을 인식하고 있는지 확인해 주세요.
시스템 환경 변수 설정: Windows의 경우, Java 설치 폴더의 경로가 시스템 환경 변수에 올바르게 설정되어 있는지 확인해 주세요.
플러그인 버전 검토:
org.springframework.boot과io.spring.dependency-management플러그인의 버전을 최신 자바 지원이 확인된 버전으로 업그레이드해보세요.IntelliJ 등의 IDE 설정 점검: 테스트 실행 시 IDE 설정이 문제를 일으킬 수 있으니, IntelliJ 설정에서 JDK 버전이 정확히 설정되어 있는지 확인해 보세요.
위 방법을 통해 문제 해결에 도움이 되었으면 합니다. 추가적으로 다른 질문이 있다면 언제든지 문의해 주세요. 계속해서 학습을 이어가시길 바랍니다.




