From db8214f7f847913e02d92ba28024fec318e1dc01 Mon Sep 17 00:00:00 2001 From: Wesley Tsai Date: Tue, 4 Apr 2023 21:29:04 -0700 Subject: [PATCH] Adds withoutAnnotations parameter to @Mock --- src/main/java/org/mockito/Mock.java | 7 +++++++ .../internal/configuration/MockAnnotationProcessor.java | 3 +++ .../java/org/mockitousage/annotation/AnnotationsTest.java | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/src/main/java/org/mockito/Mock.java b/src/main/java/org/mockito/Mock.java index 2e4f515035..4d94edfe26 100644 --- a/src/main/java/org/mockito/Mock.java +++ b/src/main/java/org/mockito/Mock.java @@ -132,6 +132,13 @@ */ String mockMaker() default ""; + /** + * Mock will not attempt to preserve all annotation metadata, see {@link MockSettings#withoutAnnotations()}. + * + * @since 5.3.0 + */ + boolean withoutAnnotations() default false; + enum Strictness { /** diff --git a/src/main/java/org/mockito/internal/configuration/MockAnnotationProcessor.java b/src/main/java/org/mockito/internal/configuration/MockAnnotationProcessor.java index fed851dbe7..f61f4a7bd9 100644 --- a/src/main/java/org/mockito/internal/configuration/MockAnnotationProcessor.java +++ b/src/main/java/org/mockito/internal/configuration/MockAnnotationProcessor.java @@ -56,6 +56,9 @@ public static Object processAnnotationForMock( if (!annotation.mockMaker().isEmpty()) { mockSettings.mockMaker(annotation.mockMaker()); } + if (annotation.withoutAnnotations()) { + mockSettings.withoutAnnotations(); + } mockSettings.genericTypeToMock(genericType.get()); diff --git a/src/test/java/org/mockitousage/annotation/AnnotationsTest.java b/src/test/java/org/mockitousage/annotation/AnnotationsTest.java index 1a33f933b2..4995be3702 100644 --- a/src/test/java/org/mockitousage/annotation/AnnotationsTest.java +++ b/src/test/java/org/mockitousage/annotation/AnnotationsTest.java @@ -88,6 +88,9 @@ public void shouldLookForAnnotatedMocksInSuperClasses() throws Exception { @Mock(stubOnly = true) IMethods stubOnly; + @Mock(withoutAnnotations = true) + IMethods withoutAnnotations; + @Test public void shouldInitMocksWithGivenSettings() throws Exception { assertEquals("i have a name", namedAndReturningMocks.toString()); @@ -99,6 +102,8 @@ public void shouldInitMocksWithGivenSettings() throws Exception { assertTrue(hasExtraInterfaces instanceof List); assertTrue(Mockito.mockingDetails(stubOnly).getMockCreationSettings().isStubOnly()); + assertTrue(Mockito.mockingDetails(withoutAnnotations).getMockCreationSettings().isStripAnnotations()); + assertEquals(0, noExtraConfig.intReturningMethod()); }