JUnit RulesThese rules deal with different problems that can occur with JUnit tests. JUnitStaticSuiteThe suite() method in a JUnit test needs to be both public and static. This rule is defined by the following XPath expression: //MethodDeclaration[not(@Static='true') or not(@Public='true')] [MethodDeclarator/@Image='suite'] Here's an example of code that would trigger this rule: import junit.framework.*; public class Foo extends TestCase { public void suite() {} // oops, should be static private static void suite() {} // oops, should be public } JUnitSpellingSome JUnit framework methods are easy to misspell. This rule is defined by the following XPath expression: //MethodDeclarator[(not(@Image = 'setUp') and translate(@Image, 'SETuP', 'setUp') = 'setUp') or (not(@Image = 'tearDown') and translate(@Image, 'TEARdOWN', 'tearDown') = 'tearDown')] [FormalParameters[count(*) = 0]] Here's an example of code that would trigger this rule: import junit.framework.*; public class Foo extends TestCase { public void setup() {} // oops, should be setUp public void TearDown() {} // oops, should be tearDown } JUnitAssertionsShouldIncludeMessageRuleJUnit assertions should include a message - i.e., use the three argument version of assertEquals(), not the two argument version. Here's an example of code that would trigger this rule: public class Foo extends TestCase { public void testSomething() { assertEquals("foo", "bar"); // not good! use the form: // assertEquals("Foo does not equals bar", "foo", "bar"); // instead } } |