강의

멘토링

커뮤니티

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

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

작성한 질문수

테스트코드 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과 관련된 문제로 보고 계신 것 같습니다.

주어진 에러 메시지를 기반으로 몇 가지 해결책을 제안 드립니다:

  1. MockMaker 설정 확인: mockito-extensions 디렉토리 안에 org.mockito.plugins.MockMaker 파일이 존재하는지 확인해 주십시오. 이 파일의 내용은 “mock-maker-inline”이어야 합니다.
   mockito-extensions/
   └─ org.mockito.plugins.MockMaker (내용: mock-maker-inline)
  1. ByteBuddy 버전 확인: 이미 ByteBuddy의 버전을 올려보신 것 같은데, 가급적 최신 버전을 사용하고 있는지 확인해 주세요.

  2. JDK 버전 확인: 기본적으로 자바 17을 사용하고 계시지만, 빌드 환경이나 IDE에서 정확히 이 버전을 인식하고 있는지 확인해 주세요.

  3. 시스템 환경 변수 설정: Windows의 경우, Java 설치 폴더의 경로가 시스템 환경 변수에 올바르게 설정되어 있는지 확인해 주세요.

  4. 플러그인 버전 검토: org.springframework.bootio.spring.dependency-management 플러그인의 버전을 최신 자바 지원이 확인된 버전으로 업그레이드해보세요.

  5. IntelliJ 등의 IDE 설정 점검: 테스트 실행 시 IDE 설정이 문제를 일으킬 수 있으니, IntelliJ 설정에서 JDK 버전이 정확히 설정되어 있는지 확인해 보세요.

위 방법을 통해 문제 해결에 도움이 되었으면 합니다. 추가적으로 다른 질문이 있다면 언제든지 문의해 주세요. 계속해서 학습을 이어가시길 바랍니다.

MockK
SpringMockK

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

작성한 질문수

질문하기