diff --git a/src/main/resources/META-INF/jqassistant-rules/mockito.xml b/src/main/resources/META-INF/jqassistant-rules/mockito.xml index 5600942..9c70f0e 100644 --- a/src/main/resources/META-INF/jqassistant-rules/mockito.xml +++ b/src/main/resources/META-INF/jqassistant-rules/mockito.xml @@ -11,8 +11,8 @@ MATCH (assertType:Java:Type)-[:DECLARES]->(assertMethod:Java:Method) WHERE - assertType.fqn = 'org.mockito.Mockito' - and assertMethod.signature =~ '.* verify.*' + assertType.fqn = 'org.mockito.Mockito' and assertMethod.signature =~ '.* verify.*' + OR assertType.fqn = 'org.mockito.MockedStatic' and assertMethod.signature =~ '.* verify.*' SET assertMethod:Mockito:Assert RETURN diff --git a/src/test/java/org/jqassistant/plugin/java_testing/concept/AssertExample.java b/src/test/java/org/jqassistant/plugin/java_testing/concept/AssertExample.java index 49f31a1..017b415 100644 --- a/src/test/java/org/jqassistant/plugin/java_testing/concept/AssertExample.java +++ b/src/test/java/org/jqassistant/plugin/java_testing/concept/AssertExample.java @@ -4,12 +4,14 @@ import org.camunda.bpm.engine.repository.ProcessDefinition; import org.camunda.bpm.engine.test.assertions.bpmn.BpmnAwareTests; import org.mockito.BDDMockito; +import org.mockito.MockedStatic; import org.xmlunit.assertj.XmlAssert; import reactor.test.StepVerifier; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.mockStatic; /** * Example class used by integration tests. @@ -29,6 +31,14 @@ void mockitoVerifyExampleMethod() { verify(mock(Object.class).equals(any(Object.class))); } + private static final String test = "testString"; + + void mockedStaticVerifyExampleMethod() { + try (MockedStatic mocked = mockStatic(String.class)) { + mocked.verify(() -> test.equals("testString")); + } + } + void bddMockitoThenShouldExampleMethod() { BDDMockito.then(mock(Object.class)).shouldHaveNoInteractions(); } diff --git a/src/test/java/org/jqassistant/plugin/java_testing/concept/MockitoIT.java b/src/test/java/org/jqassistant/plugin/java_testing/concept/MockitoIT.java index 1a30bd6..6f2ff39 100644 --- a/src/test/java/org/jqassistant/plugin/java_testing/concept/MockitoIT.java +++ b/src/test/java/org/jqassistant/plugin/java_testing/concept/MockitoIT.java @@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test; import org.mockito.BDDMockito; +import org.mockito.MockedStatic; import org.mockito.Mockito; import static com.buschmais.jqassistant.core.report.api.model.Result.Status.SUCCESS; @@ -32,7 +33,7 @@ void mockitoVerifyMethod() throws Exception { store.beginTransaction(); - assertThat(conceptResult.getRows().size()).isEqualTo(1); + assertThat(conceptResult.getRows().size()).isEqualTo(2); assertThat(conceptResult.getRows() .get(0) .getColumns() @@ -40,8 +41,15 @@ void mockitoVerifyMethod() throws Exception { .getValue()).asInstanceOf(type(MethodDescriptor.class)) .is(methodDescriptor(Mockito.class, "verify", Object.class)); + assertThat(conceptResult.getRows() + .get(1) + .getColumns() + .get("assertMethod") + .getValue()).asInstanceOf(type(MethodDescriptor.class)) + .is(methodDescriptor(MockedStatic.class, "verify", MockedStatic.Verification.class)); + final TestResult methodQueryResultForMockito = getMethodQueryResultForMockito(); - assertThat(methodQueryResultForMockito.getRows().size()).isEqualTo(1); + assertThat(methodQueryResultForMockito.getRows().size()).isEqualTo(2); verifyMockitoVerifyExampleContained(methodQueryResultForMockito); store.commitTransaction(); @@ -89,7 +97,7 @@ void providedConceptAssertMethod() throws Exception { assertThat(declaringTypes).haveExactly(1, typeDescriptor(Mockito.class)); final TestResult methodQueryResultForMockito = getMethodQueryResultForMockito(); - assertThat(methodQueryResultForMockito.getRows().size()).isEqualTo(2); + assertThat(methodQueryResultForMockito.getRows().size()).isEqualTo(3); verifyMockitoVerifyExampleContained(methodQueryResultForMockito); verifyBddMockitoThenShouldExampleContained(methodQueryResultForMockito); store.commitTransaction();