I know this has been asked before but my case seems quite unique, I just upgraded to JDK 11 on one of my android projects, as a result, had to update Mockito and PowermMckito as well. Since then I'm facing this problem.
Argument should be a mock, but is: class java.lang.Class
org.mockito.exceptions.misusing.NotAMockException: Argument should be a mock, but is: class java.lang.Class
at LogUtils.logException(LogUtils.java:84)
at PushNotificationUtilsTest.setUp(PushNotificationUtilsTest.kt:23)
at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:133)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
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:62)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
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 org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:121)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
at java.base/java.lang.Thread.run(Thread.java:834)
LogUtils
is a class with static methods.
public final class LogUtils {
private LogUtils() {
}
public static void logException(Throwable throwable) {
if (BuildConfig.DEBUG) {
throwable.printStackTrace();
}
FirebaseCrashlytics.getInstance().recordException(throwable);
}
}
On the setup method.
@RunWith(PowerMockRunner::class)
@PrepareForTest(LogUtils::class)
class PushNotificationUtilsTest {
@Before
fun setUp() {
PowerMockito.spy(LogUtils::class.java)
PowerMockito.doNothing().`when`(LogUtils::class.java, "logException", any())
}
@Test
fun isOneSignalNotification_withoutCustomKey() {
val data = HashMap<String, String>()
val result = PushNotificationUtils.isOneSignalNotification(data)
assertThat(result).isFalse()
}
@Test
fun isOneSignalNotification_withCustomKey() {
val data = HashMap<String, String>()
data["custom"] = "How's the josh?"
val result = PushNotificationUtils.isOneSignalNotification(data)
assertThat(result).isTrue()
}
@Test
fun hasCorrectOneSignalPayload_withIncorrectPayload() {
val data = HashMap<String, String>()
data["custom"] = "{\"a\":{\"message\":{\"data\":{}}}}"
val result = PushNotificationUtils.hasCorrectOneSignalPayload(data)
assertThat(result).isFalse()
}
@Test
fun hasCorrectOneSignalPayload_withCorrectPayload() {
val data = HashMap<String, String>()
data["custom"] = "{\"a\":{\"data\":{\"data\":{}}}}"
val result = PushNotificationUtils.hasCorrectOneSignalPayload(data)
assertThat(result).isTrue()
}
@Test
fun getOneSignalData() {
val data = HashMap<String, String>()
data["custom"] = "{\"a\":{\"data\":{}}}"
val result = PushNotificationUtils.getOneSignalPayload(data)
val expectedData = JsonObject()
assertThat(result).isEqualTo(expectedData)
}
}
I remotely have no idea what the error is and how to fix it, tried all the StackOverflow questions and Github issues.