question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Mockito Mock-Inline

See original GitHub issue

I am sorry to post here, but I have checked every forum, StackOverflow, tutorial, and message board possible and absolutely zero solutions work. At this point, I can’t say that this is a problem with me or the other tens of other users who are experiencing this issue.

My desire is “simple”: Mock final classes.

I have tried to use inline mocks to support this. The relevant part of my .gradle file looks like this:

testCompile 'junit:junit:4.12', 'org.mockito:mockito-inline:2.+'

I have also tried creating the file in test/resources/... and to equally no avail.

The all-to-familiar line of errors is here:

java.lang.ExceptionInInitializerError
	at org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter.<init>(ConditionalStackTraceFilter.java:17)
	at org.mockito.exceptions.base.MockitoException.filterStackTrace(MockitoException.java:41)
	at org.mockito.exceptions.base.MockitoException.<init>(MockitoException.java:30)
	at org.mockito.exceptions.misusing.MockitoConfigurationException.<init>(MockitoConfigurationException.java:18)
	at org.mockito.internal.configuration.plugins.PluginLoader.loadImpl(PluginLoader.java:66)
	at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:24)
	at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:12)
	at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:11)
	at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:24)
	at org.mockito.internal.stubbing.defaultanswers.ReturnsEmptyValues.<init>(ReturnsEmptyValues.java:58)
	at org.mockito.internal.stubbing.defaultanswers.ReturnsMoreEmptyValues.<init>(ReturnsMoreEmptyValues.java:51)
	at org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls.<init>(ReturnsSmartNulls.java:40)
	at org.mockito.Answers.<clinit>(Answers.java:43)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at java.lang.Class.getEnumConstantsShared(Class.java:3320)
	at java.lang.Class.enumConstantDirectory(Class.java:3341)
	at java.lang.Enum.valueOf(Enum.java:232)
	at sun.reflect.annotation.AnnotationParser.parseEnumValue(AnnotationParser.java:483)
	at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:347)
	at java.lang.reflect.Method.getDefaultValue(Method.java:606)
	at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:132)
	at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:85)
	at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:266)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
	at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
	at java.lang.reflect.Field.declaredAnnotations(Field.java:1150)
	at java.lang.reflect.Field.declaredAnnotations(Field.java:1148)
	at java.lang.reflect.Field.getDeclaredAnnotations(Field.java:1139)
	at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:207)
	at org.junit.runners.model.FrameworkField.getAnnotations(FrameworkField.java:31)
	at org.junit.runners.model.TestClass.addToAnnotationLists(TestClass.java:84)
	at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:71)
	at org.junit.runners.model.TestClass.<init>(TestClass.java:57)
	at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88)
	at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83)
	at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
	at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
	at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
	at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:78)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
	at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:66)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
	at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:117)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
	at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
	at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
	at org.mockito.internal.configuration.plugins.Plugins.getStackTraceCleanerProvider(Plugins.java:17)
	at org.mockito.internal.exceptions.stacktrace.StackTraceFilter.<clinit>(StackTraceFilter.java:21)
	... 74 more

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:7 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
raphwcommented, Jul 12, 2020

It’s hard to detect and really an edge case. We make breaking changes in major releases of which we had 3 so far so it’s not really a common problem. Glad you could resolve it!

0reactions
Danc2050commented, Jul 12, 2020

@raphw I removed the dependencies and everything works great! Mockito is a really great library that I favor using above others. I would suggest a feature that lets .jars exist in older projects, but not conflict with the main project’s version, but I know very little about this and don’t know the complexity or potentiality of implementing an issue (or if it is an issue from those old previous versions). However, I am deeply glad I reached out to you as my case was not fixed by any forum or previous answer nor would it likely have been. Thank you for helping me and providing such a great library!

Read more comments on GitHub >

github_iconTop Results From Across the Web

How to use the Mockito's inline mock maker - David Vlijmincx
Use strict mocking. Mockito is a loose mocking framework by default which means that you are allowed to create Mocks that have no...
Read more >
What is mockito-inline and how does it work to mock final ...
Mockito optionally offers advanced mocking features like mocking final classes. For this to work, they use a different mechanism ("mock maker") ...
Read more >
Mockito (Mockito 4.9.0 API) - javadoc.io
The Mockito library enables mock creation, verification and stubbing. ... New API for clearing mock state in inline mocking (Since 2.25.0)
Read more >
Mocking Static Methods With Mockito - Baeldung
Explore a couple of examples of how we can use Mockito to mock static methods. ... we need to configure it to activate...
Read more >
Mockito Inline - Maven Repository
Mockito preconfigured inline mock maker (intermediate and to be superseeded by automatic usage in a future version). License, MIT.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found