This rule is defined by the following XPath expression:
//StatementExpression [ .//Name[@Image='assertTrue' or @Image='assertFalse'] and PrimaryExpression/PrimarySuffix/Arguments/ArgumentList /Expression/PrimaryExpression/PrimaryPrefix /Literal/BooleanLiteral or ( .//Name[@Image='assertTrue' or @Image='assertFalse'] and PrimaryExpression/PrimarySuffix/Arguments/ArgumentList /Expression/UnaryExpressionNotPlusMinus[@Image='!'] /PrimaryExpression/PrimaryPrefix[Literal/BooleanLiteral or Name[count(../../*)=1]]) ] [ancestor::ClassOrInterfaceDeclaration[//ClassOrInterfaceType[typeof(@Image, 'junit.framework.TestCase','TestCase')] or //MarkerAnnotation/Name[typeof(@Image, 'org.junit.Test', 'Test')]]]
Example:
public class SimpleTest extends TestCase { public void testX() { // Why on earth would you write this? assertTrue(true); } }