<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at Feb 7, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>
    tycho-surefire:test</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20120207" />
    <meta http-equiv="Content-Language" content="en" />
        
        </head>
  <body class="composite">
    <div id="banner">
                    <div id="bannerLeft">
                Tycho Surefire Plugin (Incubation)
                </div>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
        
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-02-07</span>
                  &nbsp;| <span id="projectVersion">Version: 0.14.0</span>
                      </div>
            <div class="xright">                    <a href="http://wiki.eclipse.org/Development_Resources/HOWTO/Incubation_Phase#.281.29_What_Is_Incubation.3F" class="externalLink" title="This content is PRELIMINARY API and still subject to change">This content is PRELIMINARY API and still subject to change</a>
              
        
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
        
                                <h5>Tycho</h5>
                  <ul>
                  <li class="none">
                          <a href="../../index.html" title="Introduction">Introduction</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin">Compiler Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin">Packaging Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-source-plugin/plugin-info.html" title="Source Plugin">Source Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-surefire/tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin">Surefire Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin">Versions Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="P2 Director Plugin">P2 Director Plugin</a>
            </li>
                  <li class="none">
                          <a href="../../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="P2 Repository Plugin">P2 Repository Plugin</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                   
        
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        
  
    <div class="section"><h2>tycho-surefire:test<a name="tycho-surefire:test"></a></h2>
      <p><b>Full name</b>:</p>
      <p>org.eclipse.tycho:tycho-surefire-plugin:0.14.0:test</p>
      <p><b>Description</b>:</p>
      <div>(no description)</div>
      <p><b>Attributes</b>:</p>
      <ul>
        <li>Requires a Maven project to be executed.</li>
        <li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
        <li>Binds by default to the lifecycle phase: <tt>integration-test</tt>.</li>
      </ul>
      <div class="section"><h3>Required Parameters<a name="Required_Parameters"></a></h3>
        <table class="bodyTable" border="0">
          <tr class="a">
            <th>Name</th>
            <th>Type</th>
            <th>Since</th>
            <th>Description</th>
          </tr>
          <tr class="b">
            <td><b><a href="#testClassesDirectory">testClassesDirectory</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>The directory containing generated test classes of the project
being tested.<br /></td>
          </tr>
        </table>
      </div>
      <div class="section"><h3>Optional Parameters<a name="Optional_Parameters"></a></h3>
        <table class="bodyTable" border="0">
          <tr class="a">
            <th>Name</th>
            <th>Type</th>
            <th>Since</th>
            <th>Description</th>
          </tr>
          <tr class="b">
            <td><b><a href="#appArgLine">appArgLine</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Arbitrary applications arguments to set on the command line.<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#application">application</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Eclipse application to be run. If not specified, default
application org.eclipse.ui.ide.workbench will be used. Application
runnable will be invoked from test harness, not directly from
Eclipse.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#argLine">argLine</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Arbitrary JVM options to set on the command line.<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#bundleStartLevel">bundleStartLevel</a></b></td>
            <td><tt>BundleStartLevel[]</tt></td>
            <td><tt>-</tt></td>
            <td>Bundle start level and auto start configuration used by the test
runtime.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#debugPort">debugPort</a></b></td>
            <td><tt>int</tt></td>
            <td><tt>-</tt></td>
            <td>Set this parameter to suspend the test JVM waiting for a client to
open a remote debug session on the specified port.<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#dependencies">dependencies</a></b></td>
            <td><tt>Dependency[]</tt></td>
            <td><tt>-</tt></td>
            <td>Additional test target platform dependencies.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#devProperties">devProperties</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#environmentVariables">environmentVariables</a></b></td>
            <td><tt>Map</tt></td>
            <td><tt>-</tt></td>
            <td>Additional environments to set for the forked test JVM.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#excludes">excludes</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td>List of patterns (separated by commas) used to specify the tests
that should be excluded in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
excludes will be <tt>**/Abstract*Test.java
**/Abstract*TestCase.java **/*$*</tt><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#explodedBundles">explodedBundles</a></b></td>
            <td><tt>String[]</tt></td>
            <td><tt>-</tt></td>
            <td>List of bundles that must be expanded in order to execute the tests<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#failIfNoTests">failIfNoTests</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>If set to &quot;false&quot; the test execution will not fail in case there
are no tests found.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a></b></td>
            <td><tt>int</tt></td>
            <td><tt>-</tt></td>
            <td>Kill the forked test process after a certain number of seconds. If
set to 0, wait forever for the process, never timing out.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#frameworkExtensions">frameworkExtensions</a></b></td>
            <td><tt>Dependency[]</tt></td>
            <td><tt>-</tt></td>
            <td>List of framework extension bundles to add.<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#includes">includes</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td>List of patterns (separated by commas) used to specify the tests
that should be included in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
includes will be <tt>**/Test*.java **/*Test.java
**/*TestCase.java</tt><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#pluginArtifacts">pluginArtifacts</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#product">product</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Eclipse product to be run, i.e. -product parameter passed to test
Eclipse runtime.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#redirectTestOutputToFile">redirectTestOutputToFile</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Set this to &quot;true&quot; to redirect the unit test standard output to a
file (found in reportsDirectory/testName-output.txt).<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#reportsDirectory">reportsDirectory</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>Base directory where all reports are written to.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#showEclipseLog">showEclipseLog</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Enables -debug -consolelog for the test OSGi runtime<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#skip">skip</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#skipExec">skipExec</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><b>Deprecated.</b> Use skipTests instead.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#skipTests">skipTests</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#surefireProperties">surefireProperties</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#systemProperties">systemProperties</a></b></td>
            <td><tt>Map</tt></td>
            <td><tt>-</tt></td>
            <td>Additional system properties to set for the forked test JVM.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#test">test</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Specify this parameter if you want to use the test pattern matching
notation, Ant pattern matching, to select tests to run. The Ant
pattern will be used to create an include pattern formatted like
<tt>**/${test}.java</tt> When used, the <tt>includes</tt>
and <tt>excludes</tt> patterns parameters are ignored<br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#testClass">testClass</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>See testSuite<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#testFailureIgnore">testFailureIgnore</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Set this to true to ignore a failure during testing. Its use is NOT
RECOMMENDED, but quite convenient on occasion.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#testSuite">testSuite</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td>Bundle-SymbolicName of the test suite, a special bundle that knows
how to locate and execute all relevant tests. testSuite and
testClass identify single test class to run. All other tests will
be ignored if both testSuite and testClass are provided. It is an
error if provide one of the two parameters but not the other.<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#useUIHarness">useUIHarness</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Run tests using UI (true) or headless (false) test harness.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#useUIThread">useUIThread</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Run tests in UI (true) or background (false) thread. Only applies
to UI test harness.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#work">work</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/work</tt>.</td>
          </tr>
        </table>
      </div>
      <div class="section"><h3>Parameter Details<a name="Parameter_Details"></a></h3>
        <p><b><a name="appArgLine">appArgLine</a>:</b></p>
        <div>Arbitrary applications arguments to set on the command line.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="application">application</a>:</b></p>
        <div>Eclipse application to be run. If not specified, default
application org.eclipse.ui.ide.workbench will be used. Application
runnable will be invoked from test harness, not directly from
Eclipse.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="argLine">argLine</a>:</b></p>
        <div>Arbitrary JVM options to set on the command line.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${tycho.testArgLine}</tt></li>
        </ul><hr /><p><b><a name="bundleStartLevel">bundleStartLevel</a>:</b></p>
        <div>Bundle start level and auto start configuration used by the test
runtime.</div>
        <ul>
          <li><b>Type</b>: <tt>org.eclipse.sisu.equinox.launching.BundleStartLevel[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="debugPort">debugPort</a>:</b></p>
        <div>Set this parameter to suspend the test JVM waiting for a client to
open a remote debug session on the specified port.</div>
        <ul>
          <li><b>Type</b>: <tt>int</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${debugPort}</tt></li>
        </ul><hr /><p><b><a name="dependencies">dependencies</a>:</b></p>
        <div>Additional test target platform dependencies.</div>
        <ul>
          <li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="devProperties">devProperties</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.directory}/dev.properties</tt></li>
        </ul><hr /><p><b><a name="environmentVariables">environmentVariables</a>:</b></p>
        <div>Additional environments to set for the forked test JVM.</div>
        <ul>
          <li><b>Type</b>: <tt>java.util.Map</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="excludes">excludes</a>:</b></p>
        <div>List of patterns (separated by commas) used to specify the tests
that should be excluded in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
excludes will be <tt>**/Abstract*Test.java
**/Abstract*TestCase.java **/*$*</tt></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="explodedBundles">explodedBundles</a>:</b></p>
        <div>List of bundles that must be expanded in order to execute the tests</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="failIfNoTests">failIfNoTests</a>:</b></p>
        <div>If set to &quot;false&quot; the test execution will not fail in case there
are no tests found.</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${failIfNoTests}</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a>:</b></p>
        <div>Kill the forked test process after a certain number of seconds. If
set to 0, wait forever for the process, never timing out.</div>
        <ul>
          <li><b>Type</b>: <tt>int</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${surefire.timeout}</tt></li>
        </ul><hr /><p><b><a name="frameworkExtensions">frameworkExtensions</a>:</b></p>
        <div>List of framework extension bundles to add.</div>
        <ul>
          <li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="includes">includes</a>:</b></p>
        <div>List of patterns (separated by commas) used to specify the tests
that should be included in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
includes will be <tt>**/Test*.java **/*Test.java
**/*TestCase.java</tt></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="pluginArtifacts">pluginArtifacts</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${plugin.artifacts}</tt></li>
        </ul><hr /><p><b><a name="product">product</a>:</b></p>
        <div>Eclipse product to be run, i.e. -product parameter passed to test
Eclipse runtime.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="redirectTestOutputToFile">redirectTestOutputToFile</a>:</b></p>
        <div>Set this to &quot;true&quot; to redirect the unit test standard output to a
file (found in reportsDirectory/testName-output.txt).</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.redirectTestOutputToFile}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="reportsDirectory">reportsDirectory</a>:</b></p>
        <div>Base directory where all reports are written to.</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.directory}/surefire-reports</tt></li>
        </ul><hr /><p><b><a name="showEclipseLog">showEclipseLog</a>:</b></p>
        <div>Enables -debug -consolelog for the test OSGi runtime</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${tycho.showEclipseLog}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skip">skip</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.skip}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skipExec">skipExec</a>:</b></p>
        <div><b>Deprecated.</b> Use skipTests instead.</div>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.skipExec}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skipTests">skipTests</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${skipTests}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="surefireProperties">surefireProperties</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.directory}/surefire.properties</tt></li>
        </ul><hr /><p><b><a name="systemProperties">systemProperties</a>:</b></p>
        <div>Additional system properties to set for the forked test JVM.</div>
        <ul>
          <li><b>Type</b>: <tt>java.util.Map</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="test">test</a>:</b></p>
        <div>Specify this parameter if you want to use the test pattern matching
notation, Ant pattern matching, to select tests to run. The Ant
pattern will be used to create an include pattern formatted like
<tt>**/${test}.java</tt> When used, the <tt>includes</tt>
and <tt>excludes</tt> patterns parameters are ignored</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${test}</tt></li>
        </ul><hr /><p><b><a name="testClass">testClass</a>:</b></p>
        <div>See testSuite</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${testClass}</tt></li>
        </ul><hr /><p><b><a name="testClassesDirectory">testClassesDirectory</a>:</b></p>
        <div>The directory containing generated test classes of the project
being tested.</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>Yes</tt></li>
          <li><b>Expression</b>: <tt>${project.build.outputDirectory}</tt></li>
        </ul><hr /><p><b><a name="testFailureIgnore">testFailureIgnore</a>:</b></p>
        <div>Set this to true to ignore a failure during testing. Its use is NOT
RECOMMENDED, but quite convenient on occasion.</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.failure.ignore}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="testSuite">testSuite</a>:</b></p>
        <div>Bundle-SymbolicName of the test suite, a special bundle that knows
how to locate and execute all relevant tests. testSuite and
testClass identify single test class to run. All other tests will
be ignored if both testSuite and testClass are provided. It is an
error if provide one of the two parameters but not the other.</div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${testSuite}</tt></li>
        </ul><hr /><p><b><a name="useUIHarness">useUIHarness</a>:</b></p>
        <div>Run tests using UI (true) or headless (false) test harness.</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="useUIThread">useUIThread</a>:</b></p>
        <div>Run tests in UI (true) or background (false) thread. Only applies
to UI test harness.</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="work">work</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>${project.build.directory}/work</tt></li>
        </ul>
      </div>
    </div>
  

      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                    2008-2012
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
        
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
