diff --git a/src/main/java/org/mockito/internal/MockedStaticImpl.java b/src/main/java/org/mockito/internal/MockedStaticImpl.java index fb6c16010a..fbfb54b004 100644 --- a/src/main/java/org/mockito/internal/MockedStaticImpl.java +++ b/src/main/java/org/mockito/internal/MockedStaticImpl.java @@ -47,6 +47,8 @@ public OngoingStubbing when(Verification verification) { try { verification.apply(); + } catch (MockitoException exception) { + throw exception; } catch (Throwable ignored) { } diff --git a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java index 204f52e857..cac0e1dba6 100644 --- a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java +++ b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java @@ -7,11 +7,14 @@ import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.fail; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.times; import java.util.concurrent.atomic.AtomicReference; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.exceptions.base.MockitoException; @@ -20,6 +23,9 @@ public final class StaticMockTest { + @Rule + public ExpectedException exception = ExpectedException.none(); + @Test public void testStaticMockSimple() { assertEquals("foo", Dummy.foo()); @@ -177,6 +183,20 @@ public void testStaticMockVoid() { assertEquals("bar", Dummy.var1); } + @Test + public void testStaticMockMustUseValidMatchers() { + exception.expect(MockitoException.class); + exception.expectMessage("Invalid use of argument matchers!\n" + + "2 matchers expected, 1 recorded:\n" + + "-> at org.mockitoinline.StaticMockTest"); + + try (MockedStatic mockedClass = Mockito.mockStatic(Dummy.class)) { + mockedClass.when(() -> Dummy.fooVoid("foo", any())).thenReturn(null); + + Dummy.fooVoid("foo", "bar"); + } + } + static class Dummy { static String var1 = null; @@ -188,5 +208,9 @@ static String foo() { static void fooVoid(String var2) { var1 = var2; } + + static void fooVoid(String var2, String var3) { + var1 = var2; + } } }