Many of the tests contain code like: class TestCase ... { int foo = 1; Obj o = new Obj (); ... testFoo () { refer to foo and o; } } problem is that foo, and o are only assigned once when the TestCase is created, and using a different context to that set up by the setUp() method. The code should instead either initialize using a setUp() method, or better use freshly allocated objects.
Bug has been fixed by wrapping timers/counters/etc.. in an internal class for each test. The internal class is instantiated each time the test is run so there is no lasting state between test runs.