Cleanup mockito-configuration 98/109698/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 10 Jan 2024 12:33:11 +0000 (13:33 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 10 Jan 2024 12:57:09 +0000 (13:57 +0100)
Provide a MoreAnwers class, which exposes an THROWS_UNSTUBBED_METHOD
answer.

Also split out implementation into org.opendaylight.mockito, so that we
do not risk a class name collision.

Change-Id: I20c61b5ca7b83fba9da6fe16594c69bfc46b71ca
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
common/mockito-configuration/pom.xml
common/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java
common/mockito-configuration/src/main/java/org/opendaylight/mockito/ArgumentsExtractorVerifier.java [moved from common/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java with 98% similarity]
common/mockito-configuration/src/main/java/org/opendaylight/mockito/MoreAnswers.java [new file with mode: 0644]
common/mockito-configuration/src/main/java/org/opendaylight/mockito/ThrowsUnstubbedMethod.java [moved from common/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java with 60% similarity]
common/mockito-configuration/src/main/java/org/opendaylight/mockito/UnstubbedMethodException.java [moved from common/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java with 62% similarity]
common/mockito-configuration/src/main/java/org/opendaylight/mockito/package-info.java [new file with mode: 0644]
common/mockito-configuration/src/test/java/org/opendaylight/mockito/ArgumentsExtractorVerifierTest.java [moved from common/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java with 77% similarity]
common/mockito-configuration/src/test/java/org/opendaylight/mockito/DefaultAnswerTest.java [moved from common/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java with 67% similarity]

index b04b4594bf73bfadf40b4724ff40c2d0e72f3d27..c47830e2a03e814cac69b98d23a3b088e91f0c70 100644 (file)
     <packaging>jar</packaging><!-- not needed in OSGi -->
     <name>${project.artifactId}</name>
 
+    <properties>
+        <maven.javadoc.failOnWarnings>true</maven.javadoc.failOnWarnings>
+    </properties>
+
     <dependencies>
         <!-- all those dependencies will be in test scope as mockito-configuration should be referenced as test scope dependency -->
         <dependency>
             <artifactId>mockito-core</artifactId>
             <scope>compile</scope>
         </dependency>
-        <dependency>
-            <groupId>com.github.spotbugs</groupId>
-            <artifactId>spotbugs-annotations</artifactId>
-            <optional>true</optional>
-        </dependency>
     </dependencies>
 </project>
index b6909b5c443520ab24c009adeed75b191c8e22b5..716f21b3a14864ce120228600f92246209f5581b 100644 (file)
@@ -8,13 +8,14 @@
 package org.mockito.configuration;
 
 import org.mockito.stubbing.Answer;
+import org.opendaylight.mockito.MoreAnswers;
 
 /**
- * Configuration customization for Mockito. Change default answer to {@link ThrowsUnstubbedMethodException}.
+ * Configuration customization for Mockito. Change default answer to  {@link MoreAnswers#THROWS_UNSTUBBED_METHOD}.
  */
 public class MockitoConfiguration extends DefaultMockitoConfiguration {
     @Override
     public Answer<Object> getDefaultAnswer() {
-        return new ThrowsUnstubbedMethodException();
+        return MoreAnswers.THROWS_UNSTUBBED_METHOD;
     }
 }
similarity index 98%
rename from common/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java
rename to common/mockito-configuration/src/main/java/org/opendaylight/mockito/ArgumentsExtractorVerifier.java
index 692bf70f3b5189c019d829ef0c1ab9c49c069d65..08280d6dacce923636354bf0ba025d3040b23cbc 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.mockito.configuration;
+package org.opendaylight.mockito;
 
 import org.mockito.exceptions.base.MockitoException;
 import org.mockito.internal.invocation.InvocationsFinder;
diff --git a/common/mockito-configuration/src/main/java/org/opendaylight/mockito/MoreAnswers.java b/common/mockito-configuration/src/main/java/org/opendaylight/mockito/MoreAnswers.java
new file mode 100644 (file)
index 0000000..579cf01
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mockito;
+
+import static java.util.Objects.requireNonNull;
+
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+/**
+ * Additional {@link Answer}s.
+ */
+public enum MoreAnswers implements Answer<Object> {
+    /**
+     * An {@link Answer} that throws {@link UnstubbedMethodException}.
+     */
+    THROWS_UNSTUBBED_METHOD(new ThrowsUnstubbedMethod());
+
+    private final ThrowsUnstubbedMethod implementation;
+
+    MoreAnswers(final ThrowsUnstubbedMethod implementation) {
+        this.implementation = requireNonNull(implementation);
+    }
+
+    @Override
+    public Object answer(final InvocationOnMock invocation) throws Throwable {
+        return implementation.answer(invocation);
+    }
+}
similarity index 60%
rename from common/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java
rename to common/mockito-configuration/src/main/java/org/opendaylight/mockito/ThrowsUnstubbedMethod.java
index e08b755bb6a53ded43a36ea8a3575723558d65f4..fe9e99e968b0c674dec3c38281d08bc4d12a6ca1 100644 (file)
@@ -5,22 +5,21 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.mockito.configuration;
+package org.opendaylight.mockito;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.io.Serializable;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 
 /**
- * Answer that throws {@link UnstubbedMethodException}.
+ * An {@link Answer} that throws {@link UnstubbedMethodException}.
  */
-@SuppressFBWarnings("NM_CLASS_NOT_EXCEPTION")
-public class ThrowsUnstubbedMethodException implements Answer<Object>, Serializable {
+final class ThrowsUnstubbedMethod implements Answer<Object>, Serializable {
+    @java.io.Serial
     private static final long serialVersionUID = 1L;
 
     @Override
     public Object answer(final InvocationOnMock invocation) {
-        throw new UnstubbedMethodException(invocation.toString() + " was not stubbed");
+        throw new UnstubbedMethodException(invocation + " was not stubbed");
     }
 }
similarity index 62%
rename from common/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java
rename to common/mockito-configuration/src/main/java/org/opendaylight/mockito/UnstubbedMethodException.java
index 5432e7c83260402451c7293f27730495c8b7ff73..1b860785b4cf45087e9ae3d92bc3e19ecd92f410 100644 (file)
@@ -5,15 +5,23 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.mockito.configuration;
+package org.opendaylight.mockito;
+
+import static java.util.Objects.requireNonNull;
 
 /**
  * Exception to be thrown on unstubbed method call.
  */
-public class UnstubbedMethodException extends RuntimeException {
+public final class UnstubbedMethodException extends RuntimeException {
+    @java.io.Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * Default constructor.
+     *
+     * @param message detail message
+     */
     public UnstubbedMethodException(final String message) {
-        super(message);
+        super(requireNonNull(message));
     }
 }
diff --git a/common/mockito-configuration/src/main/java/org/opendaylight/mockito/package-info.java b/common/mockito-configuration/src/main/java/org/opendaylight/mockito/package-info.java
new file mode 100644 (file)
index 0000000..70469ba
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2024 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * Various utilities for working with Mockito -- for example {@link org.opendaylight.mockito.MoreAnswers}.
+ */
+package org.opendaylight.mockito;
\ No newline at end of file
similarity index 77%
rename from common/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java
rename to common/mockito-configuration/src/test/java/org/opendaylight/mockito/ArgumentsExtractorVerifierTest.java
index 5e6d4429e4188aa31c86380fb9cc2c0c80a08b4f..2c90375279208300acbdf8b5a23d0b8a08287223 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.mockito.configuration;
+package org.opendaylight.mockito;
 
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.mockito.ArgumentMatchers.any;
@@ -21,16 +21,16 @@ import org.mockito.junit.jupiter.MockitoExtension;
 @ExtendWith(MockitoExtension.class)
 class ArgumentsExtractorVerifierTest {
     @Mock
-    List<String> mockedList;
+    private List<String> mockedList;
 
     @Test
     void test() {
         doReturn(Boolean.TRUE).when(mockedList).add(any(String.class));
-        final String argument = "something";
+        final var argument = "something";
         mockedList.add(argument);
         // retrieve argument
-        final ArgumentsExtractorVerifier argumentsExtractorVerifier = new ArgumentsExtractorVerifier();
+        final var argumentsExtractorVerifier = new ArgumentsExtractorVerifier();
         verify(mockedList, argumentsExtractorVerifier).add(any(String.class));
-        assertArrayEquals(new Object[]{argument}, argumentsExtractorVerifier.getArguments());
+        assertArrayEquals(new Object[]{ argument }, argumentsExtractorVerifier.getArguments());
     }
 }
similarity index 67%
rename from common/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java
rename to common/mockito-configuration/src/test/java/org/opendaylight/mockito/DefaultAnswerTest.java
index 3114667e8e45dc8ae77f0453c636bb19608923e3..83260b7a2e39a8a26a94dff9863dc0735481565a 100644 (file)
@@ -5,20 +5,25 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.mockito.configuration;
+package org.opendaylight.mockito;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.mock;
 
 import java.io.Closeable;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
 
+@ExtendWith(MockitoExtension.class)
 class DefaultAnswerTest {
+    @Mock
+    private Closeable mock;
+
     @Test
     void testAnswering() {
-        final var mock = mock(Closeable.class);
         final var e = assertThrows(UnstubbedMethodException.class, mock::close);
-        assertEquals("closeable.close(); was not stubbed", e.getMessage());
+        assertEquals("mock.close(); was not stubbed", e.getMessage());
     }
 }