I'm trying to run Junit test from my ant build.xml file. I read here that you can use a junit.jar file instead of using the .jar that is located in the ant.home/lib directory. This is what I want to do since our Jenkins autobuild set-up has no junit.jar file in his ant lib directory.
Even with the simpliest project, I'm always getting this error that the JUnitTask was not found. If you look at my build.xml file, it is clearly included and used in the junit task.
build.xml :
<project default="all">
<property name="TALK" value="false" />
<path id="classpath.base">
</path>
<path id="classpath.test">
<fileset dir="." includes="**/*.jar" />
</path>
<target name="compile-test">
<javac srcdir="src" verbose="${TALK}">
<classpath refid="classpath.test" />
</javac>
</target>
<target name="test" depends="compile-test">
<junit>
<classpath refid="classpath.test" />
<formatter type="brief" usefile="false" />
<test name="TestClass" />
</junit>
</target>
<target name="all" depends="test" />
</project>
The small example I made to test things out looks like this :
EDIT : Updated based on answer
The junit-Documentation is a bit sparse.
If you have ant-junit.jar outside ANT_HOME/lib
you need to define the task yourself (the <taskdef/>
is from the FAQ, which is also a bit wrong, because it tells to use class="..."
, which does not exist as an attribute to <taskdef />
):
<path id="classpath.test">
<fileset dir="." includes="*junit.jar" />
</path>
<taskdef name="junit"
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
<classpath refid="classpath.test"/>
</taskdef>
This can be used to check the path:
<pathconvert property="testoutput" refid="classpath.test"/>
<echo>Path = ${testoutput}</echo>
Documentation:
junit task.
Additional information can be found in this chat transcript
found this elsewhere...
(using Mint, based on Debian)
sudo apt-get install ant-optional
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With