blob: 75895031daf6acb703fe61ad32ebc2bafc18b419 [file] [log] [blame]
<html>
<head>
<title>TestNG - Maven</title>
<link rel="stylesheet" href="testng.css" type="text/css" />
<link type="text/css" rel="stylesheet" href="http://beust.com/beust.css" />
<script type="text/javascript" src="http://beust.com/prettify.js"></script>
<script type="text/javascript" src="banner.js"></script>
</head>
<body onLoad="prettyPrint()">
<script type="text/javascript">
displayMenu("maven.html")
</script>
<style type="text/css">
*.P1 { font-family:Sans; font-size:10pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; color:#a52a2a; }
*.P2 { font-family:Sans; font-size:10pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; }
*.P3 { font-family:'Nimbus Roman No9 L'; font-size:12pt; margin-left:0in; margin-right:0in; text-align:left ! important; text-indent:0inch; }
*.Standard { font-family:'Nimbus Roman No9 L'; font-size:12pt; }
*.Textbody { font-family:'Nimbus Roman No9 L'; font-size:12pt; margin-top:0in; margin-bottom:0.0835in; }
*.T1 { font-weight:bold; }
*.T2 { color:#353535; }
*.T3 { color:#a52a2a; font-weight:bold; }
*.T4 { color:#a52a2a; }
*.T5 { color:#353535; font-family:Sans; font-size:10pt; }
*.T6 { color:#a52a2a; font-family:Sans; font-size:10pt; font-weight:bold; }
*.T7 { color:#a52a2a; font-family:Sans; font-size:10pt; }
</style>
<h2>TestNG Maven plug-ins</h2>
<!--
TestNG has plug-ins for both Maven 1 and Maven 2.
-->
<h3>Maven 1 (by Andrew Glover)</h3>
<p>The TestNG Maven plug-in is quite simple and consists of
two goals and a series of optional properties.</p>
<p>Currently the 1.1 version of the plug-in is bundled with
official releases of TestNG. To utilize the plug-in, copy the
<tt>maven-testng-plugin-<version>.jar</tt> to the <tt>$MAVEN_HOME/plugins</tt>
directory.</p>
<p>For the latest version of the plug-in (1.2 as of 12/12/05),
update your <tt>maven.repo.remote</tt> to include <tt>http://www.vanwardtechnologies.com/repository/</tt>
and then issue the following command: <tt>maven
plugin:download</tt>. Maven will issue a series of questions,
answer them as follows: <BR>
<BR>
<TABLE border="1" id="table1">
<TR>
<TD><tt>artifactId:</tt></TD>
<TD><tt>maven-testng-plugin</tt></TD>
</TR>
<TR>
<TD>groupId:</TD>
<TD><tt>testng</tt></TD>
</TR>
<TR>
<TD>version:</TD>
<TD><tt>1.2</tt></TD>
</TR>
</TABLE>
</p>
<h4>Goals</h4>
<table border="1" id="table2">
<tr>
<th>Goal</th>
<th>Description</th>
</tr>
<tr>
<td><tt>testng</tt></td>
<td>Runs TestNG</td>
</tr>
<tr>
<td><tt>testng:junit-report</tt></td>
<td>Creates a JUnit style report</td>
</tr>
</table>
<h4>Properties</h4>
<table border="1" id="table3">
<tr>
<th>Property</th>
<th>Optional?</th>
<th>Description</th>
</tr>
<tr>
<td><tt>maven.testng.suitexml.name</tt></td>
<td>Yes</td>
<td>XML file name- defaults to <tt>testng.xml</tt></td>
</tr>
<tr>
<td><tt>maven.testng.suitexml.dir</tt></td>
<td>Yes</td>
<td>Directory where XML file lives. Defaults to <tt>${basedir}/test/conf</tt></td>
</tr>
<tr>
<td><tt>maven.testng.output.dir</tt></td>
<td>Yes</td>
<td>Default report directory. Defaults to <tt>${maven.build.dir}/testng-output</tt></td>
</tr>
<tr>
<td><tt>maven.testng.source.dir</tt></td>
<td>Yes</td>
<td>For 1.4- where test source is. Defaults to <tt>${basedir}/test/java/</tt></td>
</tr>
<tr>
<td><tt>maven.testng.report.dir</tt></td>
<td>Yes</td>
<td>Directory for JUnit reports. Defaults to <tt>${maven.build.dir}/testngJunitReport</tt></td>
</tr>
</table>
<p>A sample JUnit sytle report generated via the TestNG maven
plug-in can be found <A
HREF="http://www.vanwardtechnologies.com/nfjs/testng/sample-report/junit-noframes.html#top">here</A>.
</p>
<!-- end maven stuff -->
<!-- begin maven2 -->
<h3>Maven 2 (by Jesse Kuhnert)</h3>
<p>Maven2 has changed quite a bit from the first release. Maven2 should support TestNG out of
the box without the need to download any additional plugins(other than TestNG itself). In fact,
other than specifying testng as one of your build dependencies, most people shouldn't really have
to do any other configuration for the majority of cases. Most of it just works.</p>
<h4>Snapshot Build Updates</h4>
<p>
<b>IMPORTANT:</b>The current (as of 7/30/06) maven2 TestNG plugin support has a few issues that are
in the process of being resolved by the maven2 team. Until such time as these changes are made/fixed you
may need to add a new plugin repository into your maven2 pom in order to get the most up to date functionality
working in your build. The new repository can be added with the following style script fragment:
</p>
<pre class="prettyprint">
&lt;pluginRepositories&gt;
&lt;pluginRepository&gt;
&lt;id&gt;tapestry.javaforge&lt;/id&gt;
&lt;url&gt;http://howardlewisship.com/repository&lt;/url&gt;
&lt;/pluginRepository&gt;
&lt;/pluginRepositories&gt;
</pre>
<p>
The specific version you want to use for surefire is <b>2.8-SNAPSHOT</b>.
</p>
<h4>Reference</h4>
<p>Though this section will include a lot more TestNG specific
features, the overall test plugin properties should be mostly
covered on mavens site. <b>See:</b> <a
href="http://maven.apache.org/plugins/maven-surefire-plugin/testng.html">maven TestNG</a></p>
<h4>Overview</h4>
<p>Most of the configuration aspects with maven will be
centered around your pom.xml's <tt>build</tt> section. <i>(<a
href="http://maven.apache.org/maven-model/maven.html">reference</a>)</i>
In here you define things like build output directories,
location of test source code, as well as configure plugin
parameters, like those you will need to get TestNG setup the
way that you prefer. Following is a sample portion of this
section in a pom.xml file.</p>
<pre class="prettyprint">
&lt;build&gt;
&lt;defaultGoal&gt;package&lt;/defaultGoal&gt;
&lt;sourceDirectory&gt;src/java&lt;/sourceDirectory&gt;
&lt;resources&gt;
&lt;resource&gt;
&lt;directory&gt;src/js/dojo&lt;/directory&gt;
&lt;includes&gt;
&lt;include&gt;**&lt;/include&gt;
&lt;/includes&gt;
&lt;targetPath&gt;net/sf/tacos/ajax/components/dojo&lt;/targetPath&gt;
&lt;/resource&gt;
&lt;resource&gt;
&lt;directory&gt;src/descriptor/META-INF&lt;/directory&gt;
&lt;includes&gt;
&lt;include&gt;**&lt;/include&gt;
&lt;/includes&gt;
&lt;targetPath&gt;META-INF&lt;/targetPath
&lt;/resource&gt;
&lt;/resources&gt;
&lt;testSourceDirectory&gt;src/test&lt;/testSourceDirectory&gt;
&lt;testResources&gt;
&lt;testResource&gt;
&lt;directory&gt;src/test-data&lt;/directory&gt;
&lt;includes&gt;
&lt;include&gt;*.*&lt;/include&gt;
&lt;/includes&gt;
&lt;excludes&gt;
&lt;exclude&gt;*.launch&lt;/exclude&gt;
&lt;/excludes&gt;
&lt;/testResource&gt;
&lt;/testResources&gt;
&lt;plugins&gt;
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
&lt;configuration&gt;
&lt;groups&gt;functest,util&lt;/groups&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
&lt;/plugins&gt;
&lt;/build&gt;
</pre>
<p>
The most notable section is the <tt>configuration</tt> element. Within the boundaries of this element you can define all of
the configurable TestNG properties.
</p>
<h4>Configuration</h4><h5>Goals</h5><table border="1" id="table2">
<tr>
<th>Goal</th><th>Description</th></tr><tr>
<td><tt>test</tt></td><td>Compiles and runs your tests</td></tr><tr>
<td><tt>site</tt></td><td>Creates your maven generated site, which will include the TestNG report output.</td></tr></table><h4>Properties</h4><table border="1" id="table3">
<tr>
<th>Property</th><th>Optional?</th><th>Description</th></tr><tr>
<td><tt>includes</tt></td><td>No</td><td>Comma delimited list of regexp patterns to include source files with. Ie **/Test*.java</td></tr><tr>
<td><tt>groups</tt></td><td>Yes</td><td>Comma delimited list of groups to be included in test. If left blank will run all tests by default.</td></tr><tr>
<td><tt>excludeGroups</tt></td><td>Yes</td><td>Comma delimited list of groups that should <em>not</em> be included in test run.</td></tr><tr>
<td><tt>suiteXmlFiles</tt></td><td>Yes</td><td>Comma delimited list of file paths pointing to testng.xml suite files. <tt>(src/test-data/testng-core.xml,src/test-data/testng-functional.xml)</tt>
<p><em>Warning: When defining suiteXmlFiles most of the other parameters are ignored.</em></p></td></tr><tr>
<td><tt>threadCount</tt></td><td>Yes</td><td>Number of threads to run for tests</td></tr><tr>
<td><tt>parallel</tt></td><td>Yes</td><td>When using threads, whether or not to run them in parallel.</td></tr></table><h3>Java 1.4</h3><p>
In order to use javadoc style annotations you currently <em>must</em> run maven with a java 1.4 jvm in order for them to be seen. If
you try running your javadoc annotated tests in a 1.5 jvm they will most likely not be found. It is hoped in a future release this problem
will be eliminated.
</p>
<h4>Sample Report</h4><p>
A sample surefire report with TestNG can be found <a href="samplereport/index.html">here</a>.
</p>
<!-- end maven2 -->
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-238215-2";
urchinTracker();
</script>
</body>