| 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`). |