You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If mocking a static class where method calls another static method within same class and inner class is throwing an expception the
the stubbing does not work as expected (instead of returning stubbed answer the execption is thrown)
Class StaticTest.java:
import java.util.concurrent.atomic.AtomicInteger;
public class StaticClass {
public static final AtomicInteger countOuter = new AtomicInteger(0);
public static final AtomicInteger countInner = new AtomicInteger(0);
public static final AtomicInteger resultInner = new AtomicInteger();
public static int outerMethod(String aParam1, Integer aParam2, Object aParam3) {
countOuter.incrementAndGet();
resultInner.set(innerMethod(aParam1, aParam2));
return countOuter.incrementAndGet();
}
public static int innerMethod(String aParam1, Integer aParam2) {
throw new NullPointerException();
// return countInner.incrementAndGet();
}
}
Expcected behaviour is assertEquals succeeds because the stubbing returns the expected value but exception raised
by innerMethod is returned. If line marked with (1) is comment out and comment for line with (2) is removed the validation
of check for noMoreInteraction prints
org.mockito.exceptions.verification.NoInteractionsWanted:
No interactions wanted here:
-> at TestStaticMock.testMock(TestStaticMock.java:20)
But found this interaction on mock 'StaticClass.class':
-> at TestStaticMock.lambda$0(TestStaticMock.java:14)
***
For your reference, here is the list of all invocations ([?] - means unverified).
1. [?]-> at TestStaticMock.lambda$0(TestStaticMock.java:14)
2. -> at TestStaticMock.lambda$1(TestStaticMock.java:17)
3. [?]-> at StaticClass.outerMethod(StaticClass.java:10)
at TestStaticMock.testMock(TestStaticMock.java:20)
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.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
...
showing inner invocation not expected and recording of stubbing.
The text was updated successfully, but these errors were encountered:
If mocking a static class where method calls another static method within same class and inner class is throwing an expception the
the stubbing does not work as expected (instead of returning stubbed answer the execption is thrown)
Class
StaticTest.java
:Class
TestStaticMock.java
:Expcected behaviour is
assertEquals
succeeds because the stubbing returns the expected value but exception raisedby
innerMethod
is returned. If line marked with (1) is comment out and comment for line with (2) is removed the validationof check for
noMoreInteraction
printsshowing inner invocation not expected and recording of stubbing.
The text was updated successfully, but these errors were encountered: