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

ckstj8027님의 프로필 이미지

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 통합 테스트

회원가입 부분 오류

작성

·

293

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
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.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source)

at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158)

at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147)

at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32)

at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60)

at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320)

at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

Suppressed: 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.proxy2/jdk.proxy2.$Proxy72.getHandler(Unknown Source)

at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158)

at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147)

at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32)

at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.afterTestMethod(ResetMocksTestExecutionListener.java:67)

at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:487)

at org.springframework.test.context.junit.jupiter.SpringExtension.afterEach(SpringExtension.java:278)

... 2 more

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:1683)

at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:105)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73)

at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60)

at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320)

at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240)

... 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)

... 15 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 : Amazon.com Inc.

JVM vendor version : 17.0.11+9-LTS

JVM name : OpenJDK 64-Bit Server VM

JVM version : 17.0.11+9-LTS

JVM info : mixed mode, sharing

OS name : Windows 11

OS version : 10.0

at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260)

at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)

... 18 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:177)

... 19 more

Caused by: [CIRCULAR REFERENCE: 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]

답변 2

0

안녕하세요. ckstj8027님, 공식 서포터즈 OMG입니다.

버전 문제는 맞는것 같습니다.

일단 로컬PC에 설치한게 자바 21이라고 하시니,

이 로컬PC의 자바 21기준으로 진행을 해야 할것 같아요.

 

(1) 스프링부트 프로젝트 자바 버전을 21로 설정해주세요.

(2) 그외 17로 변경했던 프로젝트 설정을 21로 변경해주세요.

(3) 마지막으로 Gradle reload를 진행해주세요.

image해결이 안될 경우 21로 설정한 캡쳐화면들을 제공해주시면 확인에 도움이 될 것 같습니다 😀

감사합니다.

ckstj8027님의 프로필 이미지
ckstj8027
질문자

imageimage변경을 해도 문제는 똑같습니다

(1) build.gradle 캡쳐화면을 올려주세요.

(2) 다른 JDK21(temurin 또는corretto ) 을 설치하여 확인해보시겠어요?

image

image

image

(3)아래 내용이 적용된 캡쳐화면

image

해결이 안될 경우 댓글 남겨주세요.

https://drive.google.com/file/d/1t0mtugq-p7JIp84SwBglhnnPcz04dKWn/view

위 링크 프로젝트를 다운받아서 확인해보시겠어요?

변경사항은 다음과 같습니다.

(1) build.gradle 일부 수정

(2) resources/mockito 관련 폴더 제거

(3) 패키지 이름 일부 변경 hello_spring => hellospring

의심되는 부분을 수정하였고 프로젝트를 다운로드 받아서 인텔리제이에서 열 때 build.gradle을 클릭해서 열어주세요.

image

올리신 프로젝트나 제가 올려드리는 프로젝트나 저의 경우 문제없이 동작합니다.

ckstj8027님의 프로필 이미지
ckstj8027
질문자

 

 

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:84)

at jdk.proxy3/jdk.proxy3.$Proxy76.getHandler(Unknown Source)

at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158)

at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147)

at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32)

 

여전히 에러입니다


 

윈도우 환경 문제일까요 어떤걸 바꿔야할지 모르겠네요

인텔리제이를 지우고 다시 설치해보시겠어요?

인텔리제이 유료 버전을 사용하신다면 무료버전도 함께 설치해서 확인해보시겠어요?

코드 문제라기보다는 환경설정문제인데,

인텔리제이를 재설치해도 동일한 상황이시라면

로컬PC(개인PC)에 자바11을 설치하시고, 자바11에서 동작하는 스프링 프로젝트 폴더를 제공해드리도록 하겠습니다.

ckstj8027님의 프로필 이미지
ckstj8027
질문자

삭제 후에 다시 다운 받았지만 여전합니다 ....

https://drive.google.com/file/d/1pTA_TArUweASCGOzNIJHO3aCTboC4-O8/view

자바 11 기준 프로젝트 입니다.(스프링부트2.x)

JDK11로 맞춰서 확인해보시겠어요?

ckstj8027님의 프로필 이미지
ckstj8027
질문자

드디어 초록불이 뜨네요 딱 제가 한 부분 까지 맞추어서 주신거죠 ?

6월 08, 2024 10:22:00 오후 org.junit.platform.launcher.core.EngineDiscoveryOrchestrator lambda$logTestDescriptorExclusionReasons$7

정보: 0 containers and 3 tests were Method or class mismatch

 

위 빨간 글씨가 뜨긴하는데

작동합니다 감사합니다

0

안녕하세요, 인프런 AI 인턴입니다.

ckstj8027님의 회원가입 부분 오류와 관렕된 문제는 “Mockito의 MockMaker 플러그인 초기화 오류”로 드러났습니다. 이는 전형적으로 몇 가지 일반적인 문제로 인해 발생할 수 있습니다:

  1. Mockito 버전과 JDK 버전의 호환성: Mockito는 JDK 버전과 호환되어야 합니다. 특정 버전의 Mockito는 최신 또는 구버전 JDK와 호환되지 않을 수 있습니다.
  2. Mockito-inline 라이브러리 사용: Mockito의 목(mock) 생성에 사용되는 기본 MockMaker는 static 메소드를 목킹할 수 없습니다. inline MockMaker를 사용하려면 mockito-inline 라이브러리를 종속성에 추가해야 합니다.
  3. 환경 문제: JDK에 내장된 Instrumentation API를 사용할 수 없어서 발생할 수 있는 오류입니다. 이는 특히 Custom된 JDK 또는 특정 환경에서 더 흔하게 발생할 수 있습니다.

이 문제를 해결하기 위해, 지식공유자님이 다른 학생의 유사한 질문에 답변한 내용이 도움이 될 수 있습니다. 특히, Java 버전을 변경하거나 Mockito 버전을 업데이트하는 것에 관한 조언이 포함된 경우가 있습니다.

다음은 이와 관련된 유사한 질문에 대한 기존 답변입니다:

그러나 직접적으로 ckstj8027님의 문제에 대한 해결책을 제공하는 기록은 찾을 수 없으므로, JDK와 Mockito의 호환성을 검토하고 필요한 경우 해당 라이브러리의 버전을 조정해 보는 것이 좋습니다. 또한, Mockito 공식 문서나 추가적인 스프링 및 Mockito 관련 리소스를 참조하여 해결 방안을 모색하는 것을 추천합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ckstj8027님의 프로필 이미지
ckstj8027
질문자

혹시 버전이 문제일까요 다들 17 쓰는거같은데 버전을 바꾸면 혹시 cmd 에서 로컬 java -version 과 해당 프로젝트둘다 변경을해야할까요 ? 일단 로컬 버전은 21인데 로컬은 냅둔채로 인텔리제이만 17로 바꿧을경우도 같은 오류로 여전히있었습니다

1project structure 에서 프로젝트 sdk 랑 language level 변경하고

2 project structure 모듈에서도 변경

3 project structure ->> sdk 에서도 jdk 설정

4 file-> setting 에서 gradle jvm 도 설정

5 file-> setting compiler 도 버전 다 17로 다운그레이드 했을 경우입니다