Do not use the test-case constructor to set up a test case, use setUp().
Don't assume the order in which tests within a test case run.
Avoid writing test cases with side effects.
Call a superclass's setUp() and tearDown() methods when subclassing
Do not load data from hard-coded locations on a filesystem
Keep tests in the same location as the source code
Name tests properly
Ensure that tests are time-independent
Consider locale when writing tests
Utilize JUnit's assert/fail methods and exception handling for clean test code
Document tests in javadoc
Avoid visual inspection
Keep tests small and fast
Use the reflection-driven JUnit API
Build a test case for the entire system
Test thread safety