Author: jhm Date: Mon Aug 6 04:18:53 2007 New Revision: 563108 URL: http://svn.apache.org/viewvc?view=rev&rev=563108 Log: Forgot to update the manual ...
Modified: ant/core/trunk/docs/manual/OptionalTasks/junit.html Modified: ant/core/trunk/docs/manual/OptionalTasks/junit.html URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/OptionalTasks/junit.html?view=diff&rev=563108&r1=563107&r2=563108 ============================================================================== --- ant/core/trunk/docs/manual/OptionalTasks/junit.html (original) +++ ant/core/trunk/docs/manual/OptionalTasks/junit.html Mon Aug 6 04:18:53 2007 @@ -354,6 +354,12 @@ that your tests have written as some characters are illegal in XML documents and will be dropped.</p> +<p>The formatter named <code>failure</code> collects all failing <code>testXXX()</code> +methods and creates a new <code>TestCase</code> which delegates only these +failing methods. The name and the location can be specified via Java System property +<code>ant.junit.failureCollector</code>. The value has to point to the directory and +the name of the resulting class (without suffix). It defaults to <i>java-tmp-dir</i>/FailedTests.</p> + <p><b>Note:</b> Please read the <a href="../../faq.html#junit-no-runtime-xml">Ant FAQ</a> if you want to set the fork attribute to <code>true</code>, the includeAntRuntime @@ -615,6 +621,50 @@ aborted. Results are collected in files named <code>TEST-</code><em>name</em><code>.txt</code> and written to <code>${reports.tests}</code>.</p> + +<pre> +<target name="test"> + <property name="collector.dir" value="${build.dir}/failingTests"/> + <property name="collector.class" value="FailedTests"/> + <!-- Delete 'old' collector classes --> + <delete> + <fileset dir="${collector.dir}" includes="${collector.class}*.class"/> + </delete> + <!-- compile the FailedTests class if present --> + <javac srcdir="${collector.dir}" destdir="${collector.dir}"/> + <available file="${collector.dir}/${collector.class}.class" property="hasFailingTests"/> + <junit haltonerror="false" haltonfailure="false"> + <sysproperty key="ant.junit.failureCollector" value="${collector.dir}/${collector.class}"/> + <classpath> + <pathelement location="${collector.dir}"/> + </classpath> + <batchtest todir="${collector.dir}" unless="hasFailingTests"> + <fileset dir="${collector.dir}" includes="**/*.java" excludes="**/${collector.class}.*"/> + <!-- for initial creation of the FailingTests.java --> + <formatter type="failure"/> + <!-- I want to see something ... --> + <formatter type="plain" usefile="false"/> + </batchtest> + <test name="FailedTests" if="hasFailingTests"> + <!-- update the FailingTests.java --> + <formatter type="failure"/> + <!-- again, I want to see something --> + <formatter type="plain" usefile="false"/> + </test> + </junit> +</target> +</pre> +<p>On the first run all tests are collected via the <code><batchtest/></code> +element. It's <code>plain</code> formatter shows the output on the console. The +<code>failure</code> formatter creates a java source file in +<code>${build.dir}/failingTests/FailedTests.java</code> which extends +<code>junit.framework.TestCase</code> and returns from a <code>suite()</code> +method a test suite for the failing tests. <br/> +On a second run the collector class exists and instead of the <code><batchtest/></code> +the single <code><test/></code> will run. So only the failing test cases are re-run. +The two nested formatters are for displaying (for the user) and for updating the collector +class. +</p> </body> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]