From 8c6d25ffdfd3b5271114a11721f3052a2a7dd706 Mon Sep 17 00:00:00 2001 From: Matthieu Vergne Date: Sun, 5 May 2024 22:21:26 +0200 Subject: [PATCH] Fixes unchecked warnings when calling Mockito.mock(Class) This is an issue well known by the Mockito community, but prone to not be fixed: https://github.com/mockito/mockito/issues/1531 Generics allow to ensure type-safety at compile time instead of runtime. However, here it is used mainly to auto-cast the created object, thus avoiding this burden on the developer. Indeed, it is in a context where type safety is usually not a requirement, since the use of this method is often the most trivial we can have: provide a class and expect a very instance of this class in return. This commit thus creates a less constrained mock method which builds on Mockito's one, but without the constraint inducing this warning. --- .../ast/visitor/GenericListVisitorAdapterTest.java | 7 ++++++- .../javaparser/ast/visitor/GenericVisitorAdapterTest.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapterTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapterTest.java index 79dac9eb893..a2a2d703aac 100644 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapterTest.java +++ b/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericListVisitorAdapterTest.java @@ -38,7 +38,6 @@ import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; class GenericListVisitorAdapterTest { @@ -2550,4 +2549,10 @@ void visit_CompactConstructorDeclaration () { order.verifyNoMoreInteractions(); } + @SuppressWarnings("unchecked") + // Non type-safe mock method to avoid unchecked warnings + // Its use is trivial and systematic enough to not be a problem + private T mock(Class classToMock) { + return (T) Mockito.mock(classToMock); + } } \ No newline at end of file diff --git a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericVisitorAdapterTest.java b/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericVisitorAdapterTest.java index 84d2209c336..283bba26e1d 100644 --- a/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericVisitorAdapterTest.java +++ b/javaparser-core-testing/src/test/java/com/github/javaparser/ast/visitor/GenericVisitorAdapterTest.java @@ -37,7 +37,6 @@ import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertNull; -import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; public class GenericVisitorAdapterTest { @@ -2549,4 +2548,10 @@ void visit_CompactConstructorDeclaration () { order.verifyNoMoreInteractions(); } + @SuppressWarnings("unchecked") + // Non type-safe mock method to avoid unchecked warnings + // Its use is trivial and systematic enough to not be a problem + private T mock(Class classToMock) { + return (T) Mockito.mock(classToMock); + } }