I am configuring JUnit in Ant so that unit tests will be run on each build. I would like the output of failing tests to be printed in the Ant console output whenever they are run. I don't need to see any output from succeeding tests.
Here is the relevant bit of my build.xml
file:
<junit>
<classpath>
<pathelement path="${build}"/>
</classpath>
<formatter type="brief" usefile="false"/>
<batchtest>
<fileset dir="${src}" includes="my/tree/junit/"/>
</batchtest>
</junit>
This produces almost what I want, failing tests are detailed in the Ant output, except that succeeding tests also write the following output:
[junit] Testsuite: my.tree.junit.ExampleTest [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.002 sec
I believe I have tried all the combinations listed in the JUnit task documentation, including:
printsummary
attributeshowoutput
attributeformatter
element with each kind oftype
My use case is running ant
from the command line. As I write more tests, I don't want the output from succeeding tests to be so large that output from failing tests scrolls off the screen. I just want ant
to be quiet unless there's a failing test that needs my attention. How can I configure Ant/JUnit to do this?
I am using Ant version 1.6.4 and JUnit 4.6.
One possibility would be to define your own xml formatter with the '
classname
' attribute (and extendingorg.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter
, potentially doing nothing onendTest()
orendTestsuite()
methods).That formatter would ignore info message and only display failure messages.
Note: this settings mention the possibility of only displaying failed tests:
Did you test that ?
Note: the "
showoutput="true"
and<formatter type="brief" usefile="false"/>
" can be a bit problematic, as illustrated by this recent (February 2012) ticket)Yet another approch would be to define your ant Juint Test runner, supporting ant
JUnitResultFormatter
and displaying only stderr messages.The
EclipseTestRunner
from eclipse is a good example.