강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

오키님의 프로필 이미지
오키

작성한 질문수

junit 테스트코드 @mock 에러

작성

·

15

0

안녕하세요 협업중 저만 테스트코드에서 java 버전과 mock어노테이션간의 에러가 있다고 계속 뜨는데

같이 협업중인 개발자와 gradle ,자바 버전, 스프링부트 버전 싹다 맞췄고 인텔리제이 내부세팅까지 동일하게 맞췄는데도 저만 뜨는 에러인거면 또 확인할게 뭐가 있을까요..?


> 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

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
오키님, Mockito에서 발생하는 에러로 고생하고 계시군요. 주로 이 문제는 JDK의 agent attachment 메커니즘과 관련이 있을 수 있습니다. 몇 가지 확인할 사항을 안내해 드리겠습니다:

  1. Byte Buddy 설정: Mockito는 기본적으로 Byte Buddy를 사용하여 mock을 생성합니다. 만약 Byte Buddy의 에이전트가 제대로 설치되지 않았거나, JDK의 버전과 호환되지 않는다면 이러한 문제가 발생할 수 있습니다.

  2. MockMaker 설정 확인: 프로젝트의 resources/mockito-extensions/org.mockito.plugins.MockMaker 파일에 mockmaker-inline 내용이 있는지 확인해보세요. 이 파일이 누락되었거나 설정이 잘못되었을 수 있습니다.

  3. JDK Compatibility Issues: 경우에 따라 최신 JDK 버전과의 호환성 문제일 수도 있습니다. 다른 JDK 버전으로 전환하여 문제가 해결되는지 확인해보는 것도 방법입니다.

  4. 의존성 충돌: 프로젝트 의존성 중 문제가 발생할 수 있으니 Mockito의 의존성 및 다른 라이브러리 의존성을 다시 확인해 보세요.

위의 방법으로 문제가 해결되지 않는다면, 사용하는 다양한 환경(Gradle, IDE, JDK, Mockito 및 기타 라이브러리 버전)에 따라 다르게 대응해야 할 수 있습니다. 추가적인 로그나 설정 정보를 함께 검토하는 것도 도움이 될 수 있습니다.

추가로, 더 많은 도움을 위해 아래의 링크도 확인해보세요:
Spring Boot Reference Documentation - Testing With Mock

문제가 잘 해결되길 바랍니다!

오키님의 프로필 이미지
오키

작성한 질문수

질문하기