Right, I got it working with <batchtest>
quite simply:
<junit showoutput="true" printsummary="yes" fork="yes">
<formatter type="xml"/>
<classpath refid="test.classpath"/>
<batchtest todir="${test.reports}">
<fileset dir="${classes}">
<include name="**/FastTestSuite.class"/>
</fileset>
</batchtest>
</junit>
I had tried <batchtest>
earlier, but had made the silly mistake of using "**/FastTestSuite.java"
instead of "**/FastTestSuite.class"
in the <include>
element… Sorry about that 🙂
NB: it’s necessary to set fork="yes"
(i.e., run the tests in a separate VM); otherwise this will also produce “initializationError” at java.lang.reflect.Constructor.newInstance(Constructor.java:513) like <test>
(see comments on the question). However, I couldn’t get <test>
working even with fork="yes"
.
The only shortcoming is that this produces just one JUnit XML report file (TEST-fi.foobar.FastTestSuite.xml) which makes it look like all the (hundreds) of tests are in one class (FastTestSuite). If anyone knows how to tweak this to show the tests in their original classes & packages, please let me know.