Browse Source

Update the junitlauncher manual to include an example of configuring a nested classpath for including test engines

master
Jaikiran Pai 7 years ago
parent
commit
ddd729ba97
1 changed files with 78 additions and 6 deletions
  1. +78
    -6
      manual/Tasks/junitlauncher.html

+ 78
- 6
manual/Tasks/junitlauncher.html View File

@@ -52,7 +52,7 @@
are necessary to run the tests are:
</p>

<ul>
<ul id="junit-platform-libraries">
<li>
<samp>junit-platform-commons.jar</samp>
</li>
@@ -62,6 +62,9 @@
<li>
<samp>junit-platform-launcher.jar</samp>
</li>
<li>
<samp>opentest4j.jar</samp>
</li>
</ul>

<p>
@@ -69,7 +72,7 @@
following libraries in the classpath
</p>

<p>
<p id="junit-vintage-engine-libraries">
For <q>junit-vintage</q> engine:
</p>

@@ -82,7 +85,7 @@
</li>
</ul>

<p>
<p id="junit-jupiter-engine-libraries">
For <q>junit-jupiter</q> engine:
</p>

@@ -93,9 +96,6 @@
<li>
<samp>junit-jupiter-engine.jar</samp>
</li>
<li>
<samp>opentest4j.jar</samp>
</li>
</ul>

<p>
@@ -108,6 +108,9 @@
<li>OR Leave <samp>ant-junitlauncher.jar</samp> in the <samp>ANT_HOME/lib</samp> directory and
include all other relevant jars in the classpath by passing them as a <kbd>-lib</kbd>
option, while invoking Ant</li>
<li>OR Use the nested <code>&lt;classpath&gt;</code> element to specify the location of the
test engines. For more details about this approach, please read the
<a href=#test-engine-in-classpath>using classpath element to include test engines</a> section.
</ul>

<p>
@@ -150,12 +153,81 @@
</p>
<ul>
<li>Finding the test classes to execute</li>
<li>Finding test engines that run the tests</li>
</ul>
<p>
If the <code>classpath</code> element isn't configured for the task, then the classpath of Ant
itself will be used for finding the test classes.
</p>

<h5 id="test-engine-in-classpath">Using the classpath element to include test engines</h5>
<p>
The <code>&lt;classpath&gt;</code> can be used to include the test engines that you want to be
considered for execution of the tests.
</p>
<p>
<strong>NOTE:</strong> An important aspect to remember is that
whether or not you use this approach, the JUnit 5 platform libraries
<a href="#junit-platform-libraries">listed earlier in this
document</a> and the <code>ant-junitlauncher.jar</code>, <i>shouldn't</i> be part of this classpath
and instead they must be included in Ant runtime's classpath either by placing them
in <code>ANT_HOME/lib</code> or by passing the <code>-lib</code> option.
</p>
<p>
Below is an example of setting up the classpath to include the Jupiter test engine during the
execution of the tests. We assume that the JUnit 5 platform libraries and the
<code>ant-junitlauncher.jar</code> have been setup as explained previously.
<br/>
<pre>
&lt;project&gt;

&lt;property name="output.dir" value="${basedir}/build"/&gt;
&lt;property name="src.test.dir" value="${basedir}/src/test"/&gt;
&lt;property name="build.classes.dir" value="${output.dir}/classes"/&gt;

&lt;target name="init"&gt;
&lt;mkdir dir="${output.dir}"/&gt;
&lt;/target&gt;

&lt;path id="junit.engine.jupiter.classpath"&gt;
&lt;fileset dir="${basedir}/src/lib/jupiter/"/&gt;
&lt;/path&gt;

&lt;target name="compile-test" depends="init"&gt;
&lt;mkdir dir="${build.classes.dir}"/&gt;
&lt;javac srcdir="${src.test.dir}"
destdir="${build.classes.dir}"&gt;
&lt;classpath refid="junit.engine.jupiter.classpath"/&gt;
&lt;/javac&gt;
&lt;/target&gt;

&lt;target name="test" depends="compile-test"&gt;
&lt;junitlauncher&gt;
&lt;classpath refid="junit.engine.jupiter.classpath"/&gt;
&lt;classpath&gt;
&lt;pathelement location="${build.classes.dir}"/&gt;
&lt;/classpath&gt;
&lt;testclasses outputdir="${output.dir}"&gt;
&lt;fileset dir="${build.classes.dir}"/&gt;
&lt;listener type="legacy-brief" sendSysOut="true"/&gt;
&lt;listener type="legacy-xml" sendSysErr="true" sendSysOut="true"/&gt;
&lt;/testclasses&gt;
&lt;/junitlauncher&gt;
&lt;/target&gt;
&lt;/project&gt;
</pre>

In the example above, the <code>src/lib/jupiter</code> directory is expected to contain
the Jupiter test engine related jars (which have been
<a href="#junit-jupiter-engine-libraries">listed in an earlier section of this
document</a>). In the <code>test</code> target we use the <code>classpath</code> nested element
to point to the <code>junit.engine.jupiter.classpath</code> containing those jars. In this
<code>test</code> target we also use another <code>classpath</code> element to point to
the location containing our test classes. If required, both these classpath can be combined
into one.
</p>

<h4>listener</h4>

<p>


Loading…
Cancel
Save