Fixes #358 Mockito verify method is not taken into account in JUnitTestsShouldIncludeAssert rule - treat Mockito's verify and Mockito.verify as assert statements
This commit is contained in:
@ -52,7 +52,8 @@ public class JUnitTestsShouldIncludeAssertRule extends AbstractJUnitRule {
|
|||||||
private boolean containsExpectOrAssert(Node n, Map<String, List<NameOccurrence>> expectables) {
|
private boolean containsExpectOrAssert(Node n, Map<String, List<NameOccurrence>> expectables) {
|
||||||
if (n instanceof ASTStatementExpression) {
|
if (n instanceof ASTStatementExpression) {
|
||||||
if (isExpectStatement((ASTStatementExpression) n, expectables)
|
if (isExpectStatement((ASTStatementExpression) n, expectables)
|
||||||
|| isAssertOrFailStatement((ASTStatementExpression) n)) {
|
|| isAssertOrFailStatement((ASTStatementExpression) n)
|
||||||
|
|| isVerifyStatement((ASTStatementExpression) n)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -137,6 +138,25 @@ public class JUnitTestsShouldIncludeAssertRule extends AbstractJUnitRule {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tells if the expression is verify statement or not
|
||||||
|
*/
|
||||||
|
private boolean isVerifyStatement(ASTStatementExpression expression) {
|
||||||
|
if (expression != null) {
|
||||||
|
ASTPrimaryExpression pe = expression.getFirstChildOfType(ASTPrimaryExpression.class);
|
||||||
|
if (pe != null) {
|
||||||
|
Node name = pe.getFirstDescendantOfType(ASTName.class);
|
||||||
|
if (name != null) {
|
||||||
|
String img = name.getImage();
|
||||||
|
if (img != null && (img.startsWith("verify") || img.startsWith("Mockito.verify"))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean isExpectStatement(ASTStatementExpression expression,
|
private boolean isExpectStatement(ASTStatementExpression expression,
|
||||||
Map<String, List<NameOccurrence>> expectables) {
|
Map<String, List<NameOccurrence>> expectables) {
|
||||||
|
|
||||||
|
@ -340,4 +340,57 @@ public class Foo {
|
|||||||
}
|
}
|
||||||
]]></code>
|
]]></code>
|
||||||
</test-code>
|
</test-code>
|
||||||
|
<test-code>
|
||||||
|
<description>#358 Treat Mockito's verify as assert expressions</description>
|
||||||
|
<expected-problems>0</expected-problems>
|
||||||
|
<code><![CDATA[
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.times;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class FooTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Bar bar;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFooCallsBar() {
|
||||||
|
Foo foo = new Foo(bar);
|
||||||
|
foo.doTask();
|
||||||
|
|
||||||
|
verify(bar, times(1)).actuallyDoTask();
|
||||||
|
}
|
||||||
|
}]]></code>
|
||||||
|
</test-code>
|
||||||
|
<test-code>
|
||||||
|
<description>#358 Treat Mockito's Mockito.verify as assert expressions</description>
|
||||||
|
<expected-problems>0</expected-problems>
|
||||||
|
<code><![CDATA[
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
|
|
||||||
|
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
|
public class FooTest {
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Bar bar;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFooCallsBar() {
|
||||||
|
Foo foo = new Foo(bar);
|
||||||
|
foo.doTask();
|
||||||
|
|
||||||
|
Mockito.verify(bar, Mockito.times(1)).actuallyDoTask();
|
||||||
|
}
|
||||||
|
}]]></code>
|
||||||
|
</test-code>
|
||||||
</test-data>
|
</test-data>
|
||||||
|
Reference in New Issue
Block a user