So it looks like the reason some of these tests are failing is due to
variance from random number generation.
Most tests are old-style JUnit 3 tests and inherit from a base class,
which among other things resets all random number generators
everywhere before every test in setUp(). However some tests are JUnit
4 tests, and don't (can't) inherit from the same base class (because
then they're run as JUnit 3 tests and any method not starting with
"test" isn't run). So they hit this issue again.
The stop-gap solution is to put this in any JUnit 4 test:
@Before
public void setUp() {
RandomUtils.useTestSeed();
}
Really we should gather this into a new superclass for JUnit 4 tests.
But then that superclass should have the same functionality as the
JUnit 3 superclass -- in particular creating and cleaning up temp
files. Copy-n-paste is ugly but works here.
Any better ideas?
To avoid two parallel superclasses:
We could merely standardize on JUnit 3, which isn't really backwards,
just different from JUnit 4.
Or move everything forward to JUnit 4, which sounds like a load of
pain (typing @Test 4000 times) but a way forward.