For JUnit3-style tests, behavior is defined in junit.framework.TestCase
and tests add behavior by overriding methods. For JUnit4-style tests, special behavior happens with fields and methods annotated with JUnit 4 annotations. Having JUnit4-style tests extend from junit.framework.TestCase
(directly or indirectly) historically has been a source of test bugs and unexpected behavior (e.g.: teardown logic and/or verification does not run because JUnit doesn't call the inherited code).
Error Prone also cannot infer whether the test class runs with JUnit 3 or JUnit 4.
Thus, even if the test class runs with JUnit 4, Error Prone will not run additional checks which can catch common errors with JUnit 4 test classes. Either use only JUnit4 classes and annotations and remove the inheritance from TestCase, or use only JUnit 3 and remove the @Test
annotations. When looking for replacements for base test classes, consider using Rules (see the @Rule
annotation and implementations of TestRule
and MethodRule
).