From 3a2eb5a42398b48f81aced5fa484b50ce6a11afd Mon Sep 17 00:00:00 2001 From: temp-droid Date: Sun, 12 Dec 2021 14:05:59 +0100 Subject: [PATCH 1/3] Fix typo 'WithMo' should be 'WithNo' --- .../src/test/java/org/mockitoinline/StaticMockTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java index b0eebdaf47..204f52e857 100644 --- a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java +++ b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java @@ -46,7 +46,7 @@ public void testStaticMockWithVerificationFailed() { } @Test - public void testStaticMockWithMoInteractions() { + public void testStaticMockWithNoInteractions() { try (MockedStatic dummy = Mockito.mockStatic(Dummy.class)) { dummy.when(Dummy::foo).thenReturn("bar"); dummy.verifyNoInteractions(); @@ -54,7 +54,7 @@ public void testStaticMockWithMoInteractions() { } @Test(expected = NoInteractionsWanted.class) - public void testStaticMockWithMoInteractionsFailed() { + public void testStaticMockWithNoInteractionsFailed() { try (MockedStatic dummy = Mockito.mockStatic(Dummy.class)) { dummy.when(Dummy::foo).thenReturn("bar"); assertEquals("bar", Dummy.foo()); @@ -63,7 +63,7 @@ public void testStaticMockWithMoInteractionsFailed() { } @Test - public void testStaticMockWithMoMoreInteractions() { + public void testStaticMockWithNoMoreInteractions() { try (MockedStatic dummy = Mockito.mockStatic(Dummy.class)) { dummy.when(Dummy::foo).thenReturn("bar"); assertEquals("bar", Dummy.foo()); @@ -73,7 +73,7 @@ public void testStaticMockWithMoMoreInteractions() { } @Test(expected = NoInteractionsWanted.class) - public void testStaticMockWithMoMoreInteractionsFailed() { + public void testStaticMockWithNoMoreInteractionsFailed() { try (MockedStatic dummy = Mockito.mockStatic(Dummy.class)) { dummy.when(Dummy::foo).thenReturn("bar"); assertEquals("bar", Dummy.foo()); From aa8028ae726186b591a3cf6b66d5dc165d60c4d0 Mon Sep 17 00:00:00 2001 From: temp-droid Date: Sun, 12 Dec 2021 14:08:04 +0100 Subject: [PATCH 2/3] Fixes #2497: Don't ignore exception if invalid matchers are passed --- .../mockito/internal/MockedStaticImpl.java | 2 ++ .../org/mockitoinline/StaticMockTest.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) 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; + } } } From 1310fc6e725b2901808b9386ca4b0d24bae1f2a8 Mon Sep 17 00:00:00 2001 From: temp-droid Date: Mon, 13 Dec 2021 21:40:21 +0100 Subject: [PATCH 3/3] refactor: Use assertj to be consistent with the rest of the codebase --- subprojects/inline/inline.gradle | 1 + .../org/mockitoinline/StaticMockTest.java | 22 +++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/subprojects/inline/inline.gradle b/subprojects/inline/inline.gradle index d1f9214580..f96cffce9f 100644 --- a/subprojects/inline/inline.gradle +++ b/subprojects/inline/inline.gradle @@ -5,6 +5,7 @@ apply from: "$rootDir/gradle/java-library.gradle" dependencies { api project.rootProject testImplementation libraries.junit4 + testImplementation libraries.assertj } tasks.javadoc.enabled = false diff --git a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java index cac0e1dba6..c0fb1cbc29 100644 --- a/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java +++ b/subprojects/inline/src/test/java/org/mockitoinline/StaticMockTest.java @@ -7,14 +7,14 @@ import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertNull; import static junit.framework.TestCase.fail; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.times; import java.util.concurrent.atomic.AtomicReference; -import org.junit.Rule; +import org.assertj.core.api.ThrowableAssert; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.exceptions.base.MockitoException; @@ -23,9 +23,6 @@ public final class StaticMockTest { - @Rule - public ExpectedException exception = ExpectedException.none(); - @Test public void testStaticMockSimple() { assertEquals("foo", Dummy.foo()); @@ -177,7 +174,7 @@ public void testStaticMockVoid() { try (MockedStatic dummy = Mockito.mockStatic(Dummy.class)) { Dummy.fooVoid("bar"); assertNull(Dummy.var1); - dummy.verify(()->Dummy.fooVoid("bar")); + dummy.verify(() -> Dummy.fooVoid("bar")); } Dummy.fooVoid("bar"); assertEquals("bar", Dummy.var1); @@ -185,13 +182,14 @@ public void testStaticMockVoid() { @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); + assertThatThrownBy( + new ThrowableAssert.ThrowingCallable() { + public void call() { + mockedClass.when(() -> Dummy.fooVoid("foo", any())).thenReturn(null); + } + }) + .hasMessageContaining("Invalid use of argument matchers!"); Dummy.fooVoid("foo", "bar"); }