<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>

        <script type="text/javascript" src="http://beust.com/scripts/shCore.js"></script>
        <script type="text/javascript" src="http://beust.com/scripts/shBrushJava.js"></script>
        <script type="text/javascript" src="http://beust.com/scripts/shBrushXml.js"></script>
        <script type="text/javascript" src="http://beust.com/scripts/shBrushBash.js"></script>
        <script type="text/javascript" src="http://beust.com/scripts/shBrushPlain.js"></script>
        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shCore.css"/>
        <link type="text/css" rel="stylesheet" href="http://beust.com/styles/shThemeCedric.css"/>
        <script type="text/javascript">
          SyntaxHighlighter.config.clipboardSwf = 'scripts/clipboard.swf';
          SyntaxHighlighter.defaults['gutter'] = false;
          SyntaxHighlighter.all();
        </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; }
  p,pre { width: 80%; }

  ul.toc {
    list-style: none;
    margin:0 0.7em 0;
    padding:0;
    font-family: verdana, arial, sans-serif;
  }
  ul.toc li {
    padding:0;
    margin: 0.2em 0 0;
  }
  ul ul {
    margin:0 2em 0;
    padding: 0;
    list-style-type: none;
  }
  li a {
    display: block;
    text-decoration: none;
    padding: 2px 10px;
    width: 140px;
  }
  ul.sub li a {
    display: block;
    border-top: none;
    padding: 2px 10px;
    background-color: transparent;
  }
</style>

<h2>TestNG Maven plug-ins</h2>

<h4>Table of Contents</h4>
<ul class="toc">
  <li class="first">
    <a class="summary" href="#maven2">Maven2 Plugin</a>

    <ul class="sub">
      <li><a href="#archetype">Archetype</a></li>
    </ul>
  </li>
  
  <li class="last"><a class="summary" href="#maven1">Maven 1 Plugin</a></li>
</ul>

<!--  begin maven2  -->
<h3 id="maven2">Maven 2</h3>

<p>Maven 2 supports TestNG out of the box without the need to download any additional plugins <em>(other than TestNG itself)</em>. It is recommended that you use version 2.4 or above of the Surefire plugin (this is the case in all recent versions of Maven).</p>

<p>
You can find the full instructions on the <a href="http://maven.apache.org/plugins/maven-surefire-plugin/">Maven Surefire Plugin web site</a>. There are also <a href="http://maven.apache.org/plugins/maven-surefire-plugin/examples/testng.html">TestNG-specific instructions</a>.
</p>

<h4>Specifying your pom.xml</h4>

The dependency in your project should look like the following:

<pre class="brush: xml">
 &lt;dependency&gt;
   &lt;groupId&gt;org.testng&lt;/groupId&gt;
   &lt;artifactId&gt;testng&lt;/artifactId&gt;
   &lt;version&gt;5.14&lt;/version&gt;
   &lt;scope&gt;test&lt;/scope&gt;
 &lt;/dependency&gt;
</pre>

<h4>Sample Report</h4>
<p>
A sample surefire report with TestNG can be found <a href="samplereport/index.html">here</a>.
</p>
<br/>
<!--  end maven2  -->

<!-- maven2 archetype -->
<h3 id="archetype">Maven TestNG Archetype <em>(Martin Gilday)</em></h3>
<p>
  Martin Gilday has added a new archetype for Maven2: to create a project using the archetype you simply have to specify my repository and the archetype ID.
</p>
  <pre class="brush: text">
  mvn archetype:create -DgroupId=org.martingilday -DartifactId=test1 -DarchetypeGroupId=org.martingilday -DarchetypeArtifactId=testng-archetype
    -DarchetypeVersion=1.0-SNAPSHOT -DremoteRepositories=http://www.martingilday.org/repository/</pre>

<p>Of course substitute in your own groupId and artifactId.</p>
<p>Don't forget to keep checking back at <a href="http://www.martingilday.org/updates/Maven+TestNG+Archetype">Martin's blog</a> for more updates. </p>
<!-- end maven2 archetype -->

<br/><br/>
<h3 id="maven1">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>

<!-- end maven stuff -->

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">
_uacct = "UA-238215-2";
urchinTracker();
</script>
	
</body>
