Mockito tests not running with Spring boot 3.1.X and java17
Hello Team,
Recently we upgraded our project dependencies from Spring boot 2.5.X to 3.1.4, and Java11 to Java17 and found all the test cases in which we used mocks failed as follows.
Here is the test I'm running
Testcase:
@ExtendWith(MockitoExtension.class) @ContextConfiguration(initializers = ConfigDataApplicationContextInitializer.class) public class UserGroupTest {
@InjectMocks private UserAndGroupService userAndGroupService;
@Mock
private UserRepository userRepository;
@Test
public void hasUsersTrue() {
when(userRepository.count()).thenReturn(1L);
assertThat(userAndGroupService.hasUsers()).isTrue();
}
}
The actual implementation of User Group service is as follows
Implementation:
@Service public class UserAndGroupService {
private final UserRepository userRepository;
public boolean hasUsers() { return userRepository.count() > 0; }
}
@Repository public interface UserRepository extends JpaRepository<UserEntity, Long> { }
while running the test "hasUsersTrue" I'm seeing the following error
Error:
org.mockito.exceptions.base.MockitoException: Mockito cannot mock this class: interface com.rapidminer.data.catalog.backend.repository.access.UserRepository.
If you're not sure why you're getting this error, please open an issue on GitHub.
Java : 17 JVM vendor name : Oracle Corporation JVM vendor version : 17+35-2724 JVM name : OpenJDK 64-Bit Server VM JVM version : 17+35-2724 JVM info : mixed mode, sharing OS name : Windows 10 OS version : 10.0
You are seeing this disclaimer because Mockito is configured to create inlined mocks. You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.
Underlying exception : org.mockito.exceptions.base.MockitoException: Could not modify all classes [interface com.rapidminer.data.catalog.backend.repository.access.UserRepository, interface org.springframework.data.jpa.repository.JpaRepository, interface org.springframework.data.repository.Repository, interface org.springframework.data.repository.CrudRepository, interface org.springframework.data.repository.query.QueryByExampleExecutor, interface org.springframework.data.repository.ListPagingAndSortingRepository, interface org.springframework.data.repository.PagingAndSortingRepository, interface org.springframework.data.repository.ListCrudRepository] at app//org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:153) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:166) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:165) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:132) at app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base@17/java.util.ArrayList.forEach(ArrayList.java:1511) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at java.base@17/java.util.ArrayList.forEach(ArrayList.java:1511) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35) at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java:53) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) at java.base@17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base@17/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base@17/java.lang.reflect.Method.invoke(Method.java:568) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy2/jdk.proxy2.$Proxy5.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) Suppressed: java.lang.NullPointerException: Cannot invoke "java.util.Set.forEach(java.util.function.Consumer)" because the return value of "org.junit.jupiter.api.extension.ExtensionContext$Store.remove(Object, java.lang.Class)" is null at org.mockito.junit.jupiter.MockitoExtension.afterEach(MockitoExtension.java:184) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAfterEachCallbacks$12(TestMethodTestDescriptor.java:260) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$13(TestMethodTestDescriptor.java:276) at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeAllAfterMethodsOrCallbacks$14(TestMethodTestDescriptor.java:276) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAllAfterMethodsOrCallbacks(TestMethodTestDescriptor.java:275) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeAfterEachCallbacks(TestMethodTestDescriptor.java:259) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:144) ... 63 more Caused by: org.mockito.exceptions.base.MockitoException: Could not modify all classes [interface com.rapidminer.data.catalog.backend.repository.access.UserRepository, interface org.springframework.data.jpa.repository.JpaRepository, interface org.springframework.data.repository.Repository, interface org.springframework.data.repository.CrudRepository, interface org.springframework.data.repository.query.QueryByExampleExecutor, interface org.springframework.data.repository.ListPagingAndSortingRepository, interface org.springframework.data.repository.PagingAndSortingRepository, interface org.springframework.data.repository.ListCrudRepository] at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:153) at app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:366) at app//net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:175) at app//net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:377) ... 70 more Caused by: java.lang.IllegalStateException: Byte Buddy could not instrument all classes within the mock's type hierarchy
This problem should never occur for javac-compiled classes. This problem has been observed for classes that are:
- Compiled by older versions of scalac
- Classes that are part of the Android distribution
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:285)
at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.mockClass(InlineBytecodeGenerator.java:218)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.lambda$mockClass$0(TypeCachingBytecodeGenerator.java:47)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:153)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:366)
at net.bytebuddy.TypeCache.findOrInsert(TypeCache.java:175)
at net.bytebuddy.TypeCache$WithInlineExpunction.findOrInsert(TypeCache.java:377)
at org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.mockClass(TypeCachingBytecodeGenerator.java:40)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMockType(InlineDelegateByteBuddyMockMaker.java:396)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.doCreateMock(InlineDelegateByteBuddyMockMaker.java:355)
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.createMock(InlineDelegateByteBuddyMockMaker.java:334)
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.createMock(InlineByteBuddyMockMaker.java:56)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:99)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:88)
at org.mockito.Mockito.mock(Mockito.java:2101)
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:73)
at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:47)
at org.mockito.MockitoAnnotations.openMocks(MockitoAnnotations.java:81)
at org.mockito.internal.framework.DefaultMockitoSession.
(DefaultMockitoSession.java:43) at org.mockito.internal.session.DefaultMockitoSessionBuilder.startMocking(DefaultMockitoSessionBuilder.java:83) ... 70 more Caused by: java.lang.AbstractMethodError: Receiver class org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator$ParameterWritingVisitorWrapper does not define or inherit an implementation of the resolved method 'abstract org.objectweb.asm.ClassVisitor wrap(net.bytebuddy.description.type.TypeDescription, org.objectweb.asm.ClassVisitor, net.bytebuddy.implementation.Implementation$Context, net.bytebuddy.pool.TypePool, net.bytebuddy.description.field.FieldList, net.bytebuddy.description.method.MethodList, int, int)' of interface net.bytebuddy.asm.AsmVisitorWrapper. at net.bytebuddy.asm.AsmVisitorWrapper$Compound.wrap(AsmVisitorWrapper.java:743) at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor.visit(TypeWriter.java:4830) at org.objectweb.asm.ClassReader.accept(ClassReader.java:569) at org.objectweb.asm.ClassReader.accept(ClassReader.java:424) at net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining.create(TypeWriter.java:3892) at net.bytebuddy.dynamic.scaffold.TypeWriter$Default.make(TypeWriter.java:2166) at net.bytebuddy.dynamic.scaffold.inline.RedefinitionDynamicTypeBuilder.make(RedefinitionDynamicTypeBuilder.java:224) at net.bytebuddy.dynamic.scaffold.inline.AbstractInliningDynamicTypeBuilder.make(AbstractInliningDynamicTypeBuilder.java:123) at net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase.make(DynamicType.java:3659) at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:402) at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:244) at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188) at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:541) at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:169) at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:281) ... 94 more
OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
UserAndGroupServiceTest > hasUsersFalse() FAILED org.mockito.exceptions.base.MockitoException at MockitoExtension.java:153 Caused by: org.mockito.exceptions.base.MockitoException at TypeCache.java:153 Caused by: java.lang.IllegalStateException at InlineBytecodeGenerator.java:285 Caused by: java.lang.AbstractMethodError at AsmVisitorWrapper.java:743
Tech STack:
Spring boot - 3.1.4 Java - OpenJDK 17
And here is the dependency hierarchical
+--- org.springframework.boot:spring-boot-starter-test:3.1.4 | +--- org.springframework.boot:spring-boot-starter:3.1.4 () | +--- org.springframework.boot:spring-boot-test:3.1.4 | | --- org.springframework.boot:spring-boot:3.1.4 () | +--- org.springframework.boot:spring-boot-test-autoconfigure:3.1.4 | | +--- org.springframework.boot:spring-boot:3.1.4 () | | +--- org.springframework.boot:spring-boot-test:3.1.4 () | | --- org.springframework.boot:spring-boot-autoconfigure:3.1.4 () | +--- com.jayway.jsonpath:json-path:2.8.0 | +--- jakarta.xml.bind:jakarta.xml.bind-api:4.0.1 () | +--- net.minidev:json-smart:2.4.11 | | --- net.minidev:accessors-smart:2.4.11 | | --- org.ow2.asm:asm:9.3 | +--- org.assertj:assertj-core:3.24.2 | | --- net.bytebuddy:byte-buddy:1.12.21 -> 1.14.4 | +--- org.hamcrest:hamcrest:2.2 | +--- org.junit.jupiter:junit-jupiter:5.9.3 | | +--- org.junit:junit-bom:5.9.3 | | | +--- org.junit.jupiter:junit-jupiter:5.9.3 (c) | | | +--- org.junit.jupiter:junit-jupiter-api:5.9.3 (c) | | | +--- org.junit.jupiter:junit-jupiter-params:5.9.3 (c) | | | --- org.junit.platform:junit-platform-commons:1.9.3 (c) | | +--- org.junit.jupiter:junit-jupiter-api:5.9.3 | | | +--- org.junit:junit-bom:5.9.3 () | | | +--- org.opentest4j:opentest4j:1.2.0 | | | +--- org.junit.platform:junit-platform-commons:1.9.3 | | | | +--- org.junit:junit-bom:5.9.3 () | | | | --- org.apiguardian:apiguardian-api:1.1.2 | | | --- org.apiguardian:apiguardian-api:1.1.2 | | --- org.junit.jupiter:junit-jupiter-params:5.9.3 | | +--- org.junit:junit-bom:5.9.3 () | | +--- org.junit.jupiter:junit-jupiter-api:5.9.3 () | | --- org.apiguardian:apiguardian-api:1.1.2 | +--- org.mockito:mockito-core:5.3.1 | | +--- net.bytebuddy:byte-buddy:1.14.4 | | --- net.bytebuddy:byte-buddy-agent:1.14.4 | +--- org.mockito:mockito-junit-jupiter:5.3.1 | | --- org.mockito:mockito-core:5.3.1 () | +--- org.skyscreamer:jsonassert:1.5.1 | | --- com.vaadin.external.google:android-json:0.0.20131108.vaadin1 | +--- org.springframework:spring-core:6.0.12 () | +--- org.springframework:spring-test:6.0.12 | | --- org.springframework:spring-core:6.0.12 (*) | --- org.xmlunit:xmlunit-core:2.9.1
Could you please let me know what is going wrong.
Thanks, Aravind
You'd better upgrade your version of a first. For example:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-bom</artifactId>
<version>5.4.0</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Or the latest version 5.6.0.
bom is used to manage version dependencies of Mockito and related libraries. By using mockito-bom, you can more easily manage versions of Mockito and its related modules without having to specify version numbers in each module.
i am facing the same issue and even after upgrading the mockito bom, it doesn't work
I have a suggestion @5aab , you are creating a jpa repository and using it as an object instead of autowiring it in the service class and i couldn't see any initialization of repository object in service class. This usually makes the repository object null. Try adding the Autowired annotation to initialize the repository. Another suggestion is -> use doReturn().when() instead of when().then() and assertThat can be simplified with assertTrue
@aravinds502 were you able to fix this issue ?
Facing the same issue
Facing same issue . Any updates?
same issue here too this was introduced after converting the micro sevice to a config client
Hi all,
I was facing a similar issue and found that the root cause was a missing Jakarta dependency and a mismatched spring dependency within the app. All of my unit tests were failing due to this along with a single mismatched spring dependency (spring-webmvc 5.3.26 instead of 6.1.2).
According to Spring: https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0/
Applications using Spring Boot 3 and above will need to move from Java EE to Jakarta EE. Including the following dependency fixed my issue:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
</dependency>
Hope this helps at least someone!
Hi all,
I was facing a similar issue and found that the root cause was a missing Jakarta dependency and a mismatched spring dependency within the app. All of my unit tests were failing due to this along with a single mismatched spring dependency (spring-webmvc 5.3.26 instead of 6.1.2).
According to Spring: https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0/
Applications using Spring Boot 3 and above will need to move from Java EE to Jakarta EE. Including the following dependency fixed my issue:
<dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> </dependency>Hope this helps at least someone!
Hi @bran-williams , Could you please let me know about the spring security version that you have used for the upgrade?
None of the above is working for me, still got the same issue.
I have upgraded my spring version to 6.0.6 and the dependencies have also been changed accordingly along with spring boot starter test But while running the test cases..it is throwing no such method found referring javax.servlet.ServletContext. I have migrated everything to latest Jakarta in the code base Can anyone suggest what else to check???
@Darshana343 - you can try adding compile only dependency for javax servlet and check.
We facing similar issue:
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) ~[mockito-core-5.3.1.jar:?]
at jdk.proxy3.$Proxy124.getHandler(Unknown Source) ~[?:?]
at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) ~[mockito-core-5.3.1.jar:?]
at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) ~[spring-boot-test-3.1.9.jar:3.1.9]
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) ~[spring-boot-test-3.1.9.jar:3.1.9]
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) ~[spring-boot-test-3.1.9.jar:3.1.9]
at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) ~[spring-boot-test-3.1.9.jar:3.1.9]
at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:288) ~[spring-test-6.0.17.jar:6.0.17]
at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:174) ~[spring-test-6.0.17.jar:6.0.17]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$2(TestMethodTestDescriptor.java:166) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeMethodsOrCallbacksUntilExceptionOccurs$6(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:202) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachCallbacks(TestMethodTestDescriptor.java:165) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:132) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68) ~[junit-jupiter-engine-5.9.3.jar:5.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:202) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
at java.util.concurrent.ForkJoinTask.awaitDone(ForkJoinTask.java:436) ~[?:?]
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:670) ~[?:?]
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.joinConcurrentTasksInReverseOrderToEnableWorkStealing(ForkJoinPoolHierarchicalTestExecutorService.java:179) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService.invokeAll(ForkJoinPoolHierarchicalTestExecutorService.java:153) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139) ~[junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) [junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138) [junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95) [junit-platform-engine-1.9.3.jar:1.9.3]
at org.junit.platform.engine.support.hierarchical.ForkJoinPoolHierarchicalTestExecutorService$ExclusiveTask.compute(ForkJoinPoolHierarchicalTestExecutorService.java:202) [junit-platform-engine-1.9.3.jar:1.9.3]
at java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194) [?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) [?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) [?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) [?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) [?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) [?:?]
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:104) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:78) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:50) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginRegistry.
It appears as if your JDK does not supply a working agent attachment mechanism. Java : 17 JVM vendor name : Alpine JVM vendor version : 17.0.10+7-alpine-r0 JVM name : OpenJDK 64-Bit Server VM JVM version : 17.0.10+7-alpine-r0 JVM info : mixed mode, sharing OS name : Linux OS version : 4.18.0-372.40.1.el8_6.x86_64
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:244) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ~[mockito-core-5.3.1.jar:?]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77) ~[?:?]
at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
at java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[?:?]
at java.lang.reflect.Constructor.newInstance(Constructor.java:480) ~[?:?]
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:102) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:78) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:50) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:27) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:22) ~[mockito-core-5.3.1.jar:?]
at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:73) ~[mockito-core-5.3.1.jar:?]
at org.mockito.Mockito.<clinit>(Mockito.java:1683) ~[mockito-core-5.3.1.jar:?]
at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:105) ~[spring-boot-test-3.1.9.jar:3.1.9]
... 42 more
Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process
at net.bytebuddy.agent.ByteBuddyAgent.installExternal(ByteBuddyAgent.java:701) ~[byte-buddy-agent-1.14.4.jar:?]
at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:631) ~[byte-buddy-agent-1.14.4.jar:?]
at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:611) ~[byte-buddy-agent-1.14.4.jar:?]
at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:563) ~[byte-buddy-agent-1.14.4.jar:?]
at net.bytebuddy.agent.ByteBuddyAgent.install(ByteBuddyAgent.java:540) ~[byte-buddy-agent-1.14.4.jar:?]
at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.
Try with using this Mockito dependency. Please try with different version too if it is not working.
<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>5.2.0</version> </dependency>