I just quickly moved over the changes from my 4.0-based source to the JUnit 3.8.2 source. I found that, when being restricted to the Java 1.4 API, debugging information is a lot harder to get. I can’t find stack traces of the threads involved, for example.
When I ran the DrJava unit test suite with the modified version of JUnit 3.8.2, I got these results:
Testsuite: edu.rice.cs.drjava.model.GlobalModelJUnitTest Tests run: 14, Failures: 1, Errors: 0, Time elapsed: 18.958 sec Testcase: testJUnitAllWithErrors (edu.rice.cs.drjava.model.GlobalModelJUnitTest): FAILED junit.framework.AssertionFailedError: test case has one error reported expected: <2> but was:<1> Testsuite: edu.rice.cs.drjava.model.MultiThreadedTestCaseTest Tests run: 1, Failures: 1, Errors: 0, Time elapsed: 0.011 sec Testcase: testUncaught (edu.rice.cs.drjava.model.MultiThreadedTestCaseTest): FAILED junit.framework.AssertionFailedError: expected:<1> but was:<0> Testsuite: edu.rice.cs.drjava.model.junit.JUnitErrorModelTest Tests run: 4, Failures: 1, Errors: 1, Time elapsed: 6.293 sec Testcase: testErrorsArrayInOrder (edu.rice.cs.drjava.model.junit.JUnitErrorModelTest): FAILED junit.framework.AssertionFailedError: the test results should have one error and one failure 1 expected: <2> but was:<1> Testcase: testVerifyErrorHandledCorrectly (edu.rice.cs.drjava.model.junit.JUnitErrorModelTest): Caused an ERROR edu.rice.cs.util.UnexpectedException: java.lang.InterruptedException Testsuite: edu.rice.cs.drjava.model.repl.InteractionsModelTest Tests run: 10, Failures: 0, Errors: 1, Time elapsed: 1.486 sec Testcase: testInterpretCurrentInteractionWithIncompleteInput (edu.rice.cs.drjava.model.repl.InteractionsModelTest): Caused an ERROR junit.framework.TestCase$MultithreadedTestError: The test did not perform a join on all spawned threads. Testsuite: edu.rice.cs.drjava.ui.InteractionsPaneTest Tests run: 14, Failures: 0, Errors: 1, Time elapsed: 4.876 sec Testcase: testPromptListClearedOnReset (edu.rice.cs.drjava.ui.InteractionsPaneTest): Caused an ERROR junit.framework.TestCase$MultithreadedTestError: The test did not perform a join on all spawned threads. Testsuite: edu.rice.cs.util.CompletionMonitorTest Tests run: 2, Failures: 0, Errors: 1, Time elapsed: 0.061 sec Testcase: testDegenerateSignal (edu.rice.cs.util.CompletionMonitorTest): Caused an ERROR junit.framework.TestCase$MultithreadedTestError: The test did not perform a join on all spawned threads. Testsuite: edu.rice.cs.util.ReaderWriterLockTest Tests run: 7, Failures: 0, Errors: 1, Time elapsed: 0.138 sec Testcase: testMultipleReaders (edu.rice.cs.util.ReaderWriterLockTest): Caused an ERROR junit.framework.TestCase$MultithreadedTestError: The test did not perform a join on all spawned threads.
This already looks a lot better than the weird RMI “unmarshall” exceptions. It looks like we have three failed tests due to wrong counts, one due to an InterruptedException
, and a whole four tests with bad join policies.
I’ll look at it more in the morning. I don’t really like this 3.8.2 system. It constrains me too much. I want something 5.0, with annotations, so I’ll have to see if I can rewrite DrJava or bring the missing files back to JUnit4.