<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-12-17
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20181217" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho Surefire Plugin &#x2013; tycho-surefire:test</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Tycho Surefire Plugin</h2>
                </div>
                      </div>
        <div class="pull-right">  </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2018-12-17</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.3.0</li>
                      
                
                    
      
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Tycho</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin">
          <i class="none"></i>
        Compiler Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin">
          <i class="none"></i>
        Packaging Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../BuildProperties.html" title="Build Properties">
          <i class="none"></i>
        Build Properties</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-surefire/tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin">
          <i class="none"></i>
        Surefire Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin">
          <i class="none"></i>
        p2 Publisher Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin">
          <i class="none"></i>
        p2 Repository Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin">
          <i class="none"></i>
        p2 Director Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-plugin/plugin-info.html" title="Source Plugin">
          <i class="none"></i>
        Source Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin">
          <i class="none"></i>
        Versions Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin">
          <i class="none"></i>
        POM Generator Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../TychoProperties.html" title="Tycho Properties">
          <i class="none"></i>
        Tycho Properties</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            
  
    <div class="section">
<h2><a name="tycho-surefire:test"></a>tycho-surefire:test</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-surefire-plugin:1.3.0:test</p>
      
<p><b>Description</b>:</p>
      
<div>
<p>Executes tests in an OSGi runtime.</p>

<p>The goal launches an OSGi runtime and executes the project's
tests in that runtime. The &quot;test runtime&quot; consists of the bundle
built in this project and its transitive dependencies, plus some
Equinox and test harness bundles. The bundles are resolved from the
target platform of the project. Note that the test runtime does
typically <i>not</i> contain the entire target platform. If there
are implicitly required bundles (e.g.
<tt>org.eclipse.equinox.ds</tt> to make declarative services work),
they need to be added manually through an
<tt>extraRequirements</tt> configuration on the
<tt>target-platform-configuration</tt> plugin.</p></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 <a class="externalLink" href="http://maven.apache.org/ref/current/maven-core/lifecycles.html">lifecycle phase</a>: <tt>integration-test</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#appArgLine">&lt;appArgLine&gt;</a></tt></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><tt><a href="#application">&lt;application&gt;</a></tt></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. Note that you need to ensure that the bundle which defines
the configured application is included in the test runtime.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#argLine">&lt;argLine&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Arbitrary JVM options to set on the command line.<br /><b>User property is</b>: <tt>tycho.testArgLine</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#bundleStartLevel">&lt;bundleStartLevel&gt;</a></tt></td>
            
<td><tt>BundleStartLevel[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Bundle start level and auto start configuration used by the test
runtime. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>. Example: 

<div>
<pre>
&lt;bundleStartLevel&gt;
  &lt;bundle&gt;
    &lt;id&gt;foo.bar.myplugin&lt;/id&gt;
    &lt;level&gt;6&lt;/level&gt;
    &lt;autoStart&gt;true&lt;/autoStart&gt;
  &lt;/bundle&gt;
&lt;/bundleStartLevel&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#debugPort">&lt;debugPort&gt;</a></tt></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 /><b>User property is</b>: <tt>debugPort</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#defaultStartLevel">&lt;defaultStartLevel&gt;</a></tt></td>
            
<td><tt>BundleStartLevel</tt></td>
            
<td><tt>-</tt></td>
            
<td>The default bundle start level and auto start configuration used by
the test runtime for bundles where the start level/auto start is
not configured in <tt>bundleStartLevel</tt>. Ignored if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. Example: 

<div>
<pre>
  &lt;defaultStartLevel&gt;
    &lt;level&gt;6&lt;/level&gt;
    &lt;autoStart&gt;true&lt;/autoStart&gt;
  &lt;/defaultStartLevel&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#deleteOsgiDataDirectory">&lt;deleteOsgiDataDirectory&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Whether to recursively delete the directory
<tt>osgiDataDirectory</tt> before running the tests.<br /><b>Default value is</b>: <tt>true</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#dependencies">&lt;dependencies&gt;</a></tt></td>
            
<td><tt>Dependency[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Additional dependencies to be added to the test runtime. Ignored if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. Note: This
parameter has only limited support for dependencies to artifacts
within the reactor. Therefore it is recommended to specify
<tt>extraRequirements</tt> on the
<tt>target-platform-configuration</tt> plugin instead. Example: 

<div>
<pre>
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;target-platform-configuration&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;dependency-resolution&gt;
         &lt;extraRequirements&gt;
            &lt;requirement&gt;
               &lt;type&gt;eclipse-feature&lt;/type&gt;
               &lt;id&gt;example.project.feature&lt;/id&gt;
               &lt;versionRange&gt;0.0.0&lt;/versionRange&gt;
            &lt;/requirement&gt;
         &lt;/extraRequirements&gt;
      &lt;/dependency-resolution&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div>

The dependencies specified as <tt>extraRequirements</tt> are -
together with the dependencies specified in the
<tt>MANIFEST.MF</tt> of the project - transitively resolved against
the target platform. The resulting set of bundles is included in
the test runtime.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#environmentVariables">&lt;environmentVariables&gt;</a></tt></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="a">
            
<td><tt><a href="#excludedGroups">&lt;excludedGroups&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>(junit47 provider with JUnit4.8+ only) Excluded groups/categories
(comma-separated). Any methods/classes/etc with one of the
groups/categories specified in this list will specifically not be
run. For JUnit, this parameter forces the use of the junit47
provider<br /><b>User property is</b>: <tt>excludedGroups</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#excludes">&lt;excludes&gt;</a></tt></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 when the
<tt>test</tt> parameter is not specified, the default excludes
will be <tt>**/*$*</tt> (which excludes all inner classes).<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#explodedBundles">&lt;explodedBundles&gt;</a></tt></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>List of bundles that must be expanded in order to execute the
tests. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#failIfNoTests">&lt;failIfNoTests&gt;</a></tt></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>.<br /><b>User property is</b>: <tt>failIfNoTests</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#forkedProcessTimeoutInSeconds">&lt;forkedProcessTimeoutInSeconds&gt;</a></tt></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 /><b>User property is</b>: <tt>surefire.timeout</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#frameworkExtensions">&lt;frameworkExtensions&gt;</a></tt></td>
            
<td><tt>Dependency[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>List of framework extension bundles to add. Note: The goal does not
automatically detect which bundles in the test runtime are
framework extensions, but they have to be explicitly specified
using this parameter. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#groups">&lt;groups&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>(junit47 provider with JUnit4.8+ only) Groups/categories for this
test (comma-separated). Only classes/methods/etc decorated with one
of the group/category specified here will be included in test run,
if specified. For JUnit, this parameter forces the use of the
junit47 provider<br /><b>User property is</b>: <tt>groups</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#includes">&lt;includes&gt;</a></tt></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 when 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="a">
            
<td><tt><a href="#osgiDataDirectory">&lt;osgiDataDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td><a class="externalLink" href="http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<tt>osgi.instance.area</tt>, aka the
workspace) of the Equinox runtime used to execute tests.<br /><b>Default value is</b>: <tt>${project.build.directory}/work/data/</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#parallel">&lt;parallel&gt;</a></tt></td>
            
<td><tt>ParallelMode</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>(JUnit 4.7 provider) Supports values &quot;classes&quot;/&quot;methods&quot;/&quot;both&quot; to
run in separate threads, as controlled by threadCount.<br /><b>User property is</b>: <tt>parallel</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#perCoreThreadCount">&lt;perCoreThreadCount&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>(JUnit 4.7 provider) Indicates that threadCount is per cpu core.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>perCoreThreadCount</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#pluginArtifacts">&lt;pluginArtifacts&gt;</a></tt></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>User property is</b>: <tt>plugin.artifacts</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#product">&lt;product&gt;</a></tt></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><tt><a href="#profileName">&lt;profileName&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>0.19.0</tt></td>
            
<td>p2 <a class="externalLink" href="http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_director.html">profile</a>
name of the installation under test. Only relevant if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. If tests are
installed on top of an already existing installation in
<tt>work</tt>, this must match the name of the existing
profile.<br /><b>Default value is</b>: <tt>DefaultProfile</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#providerHint">&lt;providerHint&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>Normally tycho will automatically determine the test framework
provider based on the test project's classpath. Use this to force
using a test framework provider implementation with the given role
hint. Tycho comes with providers &quot;junit3&quot;,&quot;junit4&quot;,&quot;junit47&quot;. Note
that when specifying a providerHint, you have to make sure the
provider is actually available in the dependencies of
tycho-surefire-plugin.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#providerProperties">&lt;providerProperties&gt;</a></tt></td>
            
<td><tt>Properties</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>Use this to specify surefire provider-specific properties.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#redirectTestOutputToFile">&lt;redirectTestOutputToFile&gt;</a></tt></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>.<br /><b>User property is</b>: <tt>maven.test.redirectTestOutputToFile</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#reportsDirectory">&lt;reportsDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Base directory where all reports are written to.<br /><b>Default value is</b>: <tt>${project.build.directory}/surefire-reports</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#rerunFailingTestsCount">&lt;rerunFailingTestsCount&gt;</a></tt></td>
            
<td><tt>Integer</tt></td>
            
<td><tt>-</tt></td>
            
<td>Flaky tests will re-run until they pass or the number of reruns has
been exhausted. See surefire documentation for details. 

<p>Note: This feature is supported only for JUnit 4.x</p><br /><b>Default value is</b>: <tt>0</tt>.<br /><b>User property is</b>: <tt>surefire.rerunFailingTestsCount</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#runOrder">&lt;runOrder&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>0.19.0</tt></td>
            
<td>Defines the order the tests will be run in. Supported values are
&quot;alphabetical&quot;, &quot;reversealphabetical&quot;, &quot;random&quot;, &quot;hourly&quot;
(alphabetical on even hours, reverse alphabetical on odd hours) and
&quot;filesystem&quot;.<br /><b>Default value is</b>: <tt>filesystem</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#showEclipseLog">&lt;showEclipseLog&gt;</a></tt></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>.<br /><b>User property is</b>: <tt>tycho.showEclipseLog</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skip">&lt;skip&gt;</a></tt></td>
            
<td><tt>Boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Same as <tt>skipTests</tt><br /><b>User property is</b>: <tt>maven.test.skip</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skipAfterFailureCount">&lt;skipAfterFailureCount&gt;</a></tt></td>
            
<td><tt>Integer</tt></td>
            
<td><tt>-</tt></td>
            
<td>Skips the remaining tests after the Nth failure or error. See
surefire documentation for details.<br /><b>Default value is</b>: <tt>0</tt>.<br /><b>User property is</b>: <tt>surefire.skipAfterFailureCount</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#skipExec">&lt;skipExec&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td><b>Deprecated.</b> Use skipTests instead.<br /><b>User property is</b>: <tt>maven.test.skipExec</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#skipTests">&lt;skipTests&gt;</a></tt></td>
            
<td><tt>Boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Set this to &quot;true&quot; to skip running tests, but still compile them.
Its use is NOT RECOMMENDED, but quite convenient on occasion.
Default: <tt>false</tt><br /><b>User property is</b>: <tt>skipTests</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#suiteXmlFiles">&lt;suiteXmlFiles&gt;</a></tt></td>
            
<td><tt>List</tt></td>
            
<td><tt>-</tt></td>
            
<td>Only supported by the TestNG test provider. The values specified
are passed to TestNG as test suite files. The suite files will
overwrite the <tt>includes</tt> and <tt>excludes</tt>
patterns. The path to the suite file(s) could be relative (test
bundle classpath) or an absolute path to xml files outside the test
bundle. 

<div>
<pre>
&lt;configuration&gt;
  &lt;suiteXmlFiles&gt;
    &lt;suiteXmlFile&gt;myTestSuite.xml&lt;/suiteXmlFile&gt;
  &lt;/suiteXmlFiles&gt;
&lt;/configuration&gt;
</pre></div><br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#surefireProperties">&lt;surefireProperties&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>Default value is</b>: <tt>${project.build.directory}/surefire.properties</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#systemProperties">&lt;systemProperties&gt;</a></tt></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="a">
            
<td><tt><a href="#test">&lt;test&gt;</a></tt></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 /><b>User property is</b>: <tt>test</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#testClass">&lt;testClass&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Identifies a single test (suite) class to run. This is useful if
you have a single JUnit test suite class defining which tests
should be executed. Will be ignored if <tt>test</tt> is
specified. Example: 

<div>
<pre>
&lt;testClass&gt;foo.bar.FooTest&lt;/testClass&gt;
</pre></div><br /><b>User property is</b>: <tt>testClass</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#testClassesDirectory">&lt;testClassesDirectory&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The directory containing generated test classes of the project
being tested.<br /><b>User property is</b>: <tt>project.build.outputDirectory</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#testFailureIgnore">&lt;testFailureIgnore&gt;</a></tt></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>.<br /><b>User property is</b>: <tt>maven.test.failure.ignore</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#testRuntime">&lt;testRuntime&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>0.19.0</tt></td>
            
<td>How to create the OSGi test runtime. Allowed values are
<tt>default</tt> and <tt>p2Installed</tt>. Mode
<tt>p2Installed</tt> is <b>EXPERIMENTAL</b> - only works when
installing products under test (see below). 

<ul>

<li>In <tt>default</tt> mode, all necessary files to define the
test runtime like <tt>config.ini</tt> are generated by tycho. This
installation mode has the advantage that the test runtime is
minimal (defined by the transitive dependencies of the test bundle
plus and the test harness) and existing bundle jars are referenced
rather than copied for the installation</li>

<li>In <tt>p2Installed</tt> mode, use p2 director to install
test bundle, test harness bundles and respective dependencies. This
installation mode can be used for integration tests that require a
fully p2-provisioned installation. To install a product IU, add it
as extra requirement to the test bundle (see example below). Note
that this installation mode comes with a certain performance
overhead for executing the provisioning operations otherwise not
required.</li>
</ul>
Example configuration which will install product IU under test
&quot;example.product.id&quot; using p2: 

<div>
<pre>
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;testRuntime&gt;p2Installed&lt;/testRuntime&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;target-platform-configuration&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;dependency-resolution&gt;
         &lt;extraRequirements&gt;
            &lt;!-- product IU under test --&gt;
            &lt;requirement&gt;
               &lt;type&gt;p2-installable-unit&lt;/type&gt;
               &lt;id&gt;example.product.id&lt;/id&gt;
               &lt;versionRange&gt;0.0.0&lt;/versionRange&gt;
            &lt;/requirement&gt;
         &lt;/extraRequirements&gt;
      &lt;/dependency-resolution&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div><br /><b>Default value is</b>: <tt>default</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#threadCount">&lt;threadCount&gt;</a></tt></td>
            
<td><tt>int</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>(JUnit 4.7 provider) The attribute thread-count allows you to
specify how many threads should be allocated for this execution.
Only makes sense to use in conjunction with the parallel parameter.<br /><b>User property is</b>: <tt>threadCount</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#trimStackTrace">&lt;trimStackTrace&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.3.0</tt></td>
            
<td>When <tt>true</tt>, stack traces are trimmed to only show lines
within the test.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>trimStackTrace</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#useJDK">&lt;useJDK&gt;</a></tt></td>
            
<td><tt>ToolchainProvider$JDKUsage</tt></td>
            
<td><tt>-</tt></td>
            
<td>Which JDK to use for executing tests. Possible values are:
<tt>SYSTEM</tt>, <tt>BREE</tt> . 

<ul>

<li>SYSTEM: Use the currently running JVM (or from <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">toolchain</a>
if configured in pom.xml)</li>

<li>BREE: use MANIFEST header
<tt>Bundle-RequiredExecutionEnvironment</tt> to lookup the JDK
from <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">toolchains.xml</a>.
The value of BREE will be matched against the id of the toolchain
elements in toolchains.xml.</li>
</ul>
Example for BREE: <br />
In <tt>META-INF/MANIFEST.MF</tt>: 

<div>
<pre>
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
</pre></div>

In toolchains.xml: 

<div>
<pre>
&lt;toolchains&gt;
   &lt;toolchain&gt;
      &lt;type&gt;jdk&lt;/type&gt;
      &lt;provides&gt;
         &lt;id&gt;JavaSE-1.7&lt;/id&gt;
      &lt;/provides&gt;
      &lt;configuration&gt;
         &lt;jdkHome&gt;/path/to/jdk/1.7&lt;/jdkHome&gt;
      &lt;/configuration&gt;
   &lt;/toolchain&gt;
&lt;/toolchains&gt;
</pre></div><br /><b>Default value is</b>: <tt>SYSTEM</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#useUIHarness">&lt;useUIHarness&gt;</a></tt></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>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#useUIThread">&lt;useUIThread&gt;</a></tt></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>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#useUnlimitedThreads">&lt;useUnlimitedThreads&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>0.16.0</tt></td>
            
<td>(JUnit 4.7 provider) Indicates that the thread pool will be
unlimited. The parallel parameter and the actual number of
classes/methods will decide. Setting this to &quot;true&quot; effectively
disables perCoreThreadCount and threadCount.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>useUnlimitedThreads</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#work">&lt;work&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Root directory (<a class="externalLink" href="http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstallarea">osgi.install.area</a>)
of the Equinox runtime used to execute tests.<br /><b>Default value is</b>: <tt>${project.build.directory}/work</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<div class="section">
<h4><a name="aappArgLine"></a><b><a name="appArgLine">&lt;appArgLine&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="aapplication"></a><b><a name="application">&lt;application&gt;</a></b></h4>
        
<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. Note that you need to ensure that the bundle which defines
the configured application is included in the test runtime.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aargLine"></a><b><a name="argLine">&lt;argLine&gt;</a></b></h4>
        
<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>User Property</b>: <tt>tycho.testArgLine</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="abundleStartLevel"></a><b><a name="bundleStartLevel">&lt;bundleStartLevel&gt;</a></b></h4>
        
<div>Bundle start level and auto start configuration used by the test
runtime. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>. Example: 

<div>
<pre>
&lt;bundleStartLevel&gt;
  &lt;bundle&gt;
    &lt;id&gt;foo.bar.myplugin&lt;/id&gt;
    &lt;level&gt;6&lt;/level&gt;
    &lt;autoStart&gt;true&lt;/autoStart&gt;
  &lt;/bundle&gt;
&lt;/bundleStartLevel&gt;
</pre></div></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 /></div>
<div class="section">
<h4><a name="adebugPort"></a><b><a name="debugPort">&lt;debugPort&gt;</a></b></h4>
        
<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>User Property</b>: <tt>debugPort</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="adefaultStartLevel"></a><b><a name="defaultStartLevel">&lt;defaultStartLevel&gt;</a></b></h4>
        
<div>The default bundle start level and auto start configuration used by
the test runtime for bundles where the start level/auto start is
not configured in <tt>bundleStartLevel</tt>. Ignored if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. Example: 

<div>
<pre>
  &lt;defaultStartLevel&gt;
    &lt;level&gt;6&lt;/level&gt;
    &lt;autoStart&gt;true&lt;/autoStart&gt;
  &lt;/defaultStartLevel&gt;
</pre></div></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 /></div>
<div class="section">
<h4><a name="adeleteOsgiDataDirectory"></a><b><a name="deleteOsgiDataDirectory">&lt;deleteOsgiDataDirectory&gt;</a></b></h4>
        
<div>Whether to recursively delete the directory
<tt>osgiDataDirectory</tt> before running the tests.</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 /></div>
<div class="section">
<h4><a name="adependencies"></a><b><a name="dependencies">&lt;dependencies&gt;</a></b></h4>
        
<div>Additional dependencies to be added to the test runtime. Ignored if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. Note: This
parameter has only limited support for dependencies to artifacts
within the reactor. Therefore it is recommended to specify
<tt>extraRequirements</tt> on the
<tt>target-platform-configuration</tt> plugin instead. Example: 

<div>
<pre>
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;target-platform-configuration&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;dependency-resolution&gt;
         &lt;extraRequirements&gt;
            &lt;requirement&gt;
               &lt;type&gt;eclipse-feature&lt;/type&gt;
               &lt;id&gt;example.project.feature&lt;/id&gt;
               &lt;versionRange&gt;0.0.0&lt;/versionRange&gt;
            &lt;/requirement&gt;
         &lt;/extraRequirements&gt;
      &lt;/dependency-resolution&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div>

The dependencies specified as <tt>extraRequirements</tt> are -
together with the dependencies specified in the
<tt>MANIFEST.MF</tt> of the project - transitively resolved against
the target platform. The resulting set of bundles is included in
the test runtime.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aenvironmentVariables"></a><b><a name="environmentVariables">&lt;environmentVariables&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="aexcludedGroups"></a><b><a name="excludedGroups">&lt;excludedGroups&gt;</a></b></h4>
        
<div>(junit47 provider with JUnit4.8+ only) Excluded groups/categories
(comma-separated). Any methods/classes/etc with one of the
groups/categories specified in this list will specifically not be
run. For JUnit, this parameter forces the use of the junit47
provider</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>excludedGroups</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aexcludes"></a><b><a name="excludes">&lt;excludes&gt;</a></b></h4>
        
<div>List of patterns (separated by commas) used to specify the tests
that should be excluded in testing. When not specified and when the
<tt>test</tt> parameter is not specified, the default excludes
will be <tt>**/*$*</tt> (which excludes all inner classes).</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aexplodedBundles"></a><b><a name="explodedBundles">&lt;explodedBundles&gt;</a></b></h4>
        
<div>List of bundles that must be expanded in order to execute the
tests. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="afailIfNoTests"></a><b><a name="failIfNoTests">&lt;failIfNoTests&gt;</a></b></h4>
        
<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>User Property</b>: <tt>failIfNoTests</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aforkedProcessTimeoutInSeconds"></a><b><a name="forkedProcessTimeoutInSeconds">&lt;forkedProcessTimeoutInSeconds&gt;</a></b></h4>
        
<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>User Property</b>: <tt>surefire.timeout</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aframeworkExtensions"></a><b><a name="frameworkExtensions">&lt;frameworkExtensions&gt;</a></b></h4>
        
<div>List of framework extension bundles to add. Note: The goal does not
automatically detect which bundles in the test runtime are
framework extensions, but they have to be explicitly specified
using this parameter. Ignored if <tt>testRuntime</tt> is
<tt>p2Installed</tt>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="agroups"></a><b><a name="groups">&lt;groups&gt;</a></b></h4>
        
<div>(junit47 provider with JUnit4.8+ only) Groups/categories for this
test (comma-separated). Only classes/methods/etc decorated with one
of the group/category specified here will be included in test run,
if specified. For JUnit, this parameter forces the use of the
junit47 provider</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>groups</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aincludes"></a><b><a name="includes">&lt;includes&gt;</a></b></h4>
        
<div>List of patterns (separated by commas) used to specify the tests
that should be included in testing. When not specified and when 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 /></div>
<div class="section">
<h4><a name="aosgiDataDirectory"></a><b><a name="osgiDataDirectory">&lt;osgiDataDirectory&gt;</a></b></h4>
        
<div><a class="externalLink" href="http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<tt>osgi.instance.area</tt>, aka the
workspace) of the Equinox runtime used to execute tests.</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/data/</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aparallel"></a><b><a name="parallel">&lt;parallel&gt;</a></b></h4>
        
<div>(JUnit 4.7 provider) Supports values &quot;classes&quot;/&quot;methods&quot;/&quot;both&quot; to
run in separate threads, as controlled by threadCount.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.surefire.ParallelMode</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>parallel</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aperCoreThreadCount"></a><b><a name="perCoreThreadCount">&lt;perCoreThreadCount&gt;</a></b></h4>
        
<div>(JUnit 4.7 provider) Indicates that threadCount is per cpu core.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>perCoreThreadCount</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="apluginArtifacts"></a><b><a name="pluginArtifacts">&lt;pluginArtifacts&gt;</a></b></h4>
        
<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>User Property</b>: <tt>plugin.artifacts</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aproduct"></a><b><a name="product">&lt;product&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="aprofileName"></a><b><a name="profileName">&lt;profileName&gt;</a></b></h4>
        
<div>p2 <a class="externalLink" href="http://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fp2_director.html">profile</a>
name of the installation under test. Only relevant if
<tt>testRuntime</tt> is <tt>p2Installed</tt>. If tests are
installed on top of an already existing installation in
<tt>work</tt>, this must match the name of the existing
profile.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>0.19.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>DefaultProfile</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aproviderHint"></a><b><a name="providerHint">&lt;providerHint&gt;</a></b></h4>
        
<div>Normally tycho will automatically determine the test framework
provider based on the test project's classpath. Use this to force
using a test framework provider implementation with the given role
hint. Tycho comes with providers &quot;junit3&quot;,&quot;junit4&quot;,&quot;junit47&quot;. Note
that when specifying a providerHint, you have to make sure the
provider is actually available in the dependencies of
tycho-surefire-plugin.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aproviderProperties"></a><b><a name="providerProperties">&lt;providerProperties&gt;</a></b></h4>
        
<div>Use this to specify surefire provider-specific properties.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Properties</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aredirectTestOutputToFile"></a><b><a name="redirectTestOutputToFile">&lt;redirectTestOutputToFile&gt;</a></b></h4>
        
<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>User Property</b>: <tt>maven.test.redirectTestOutputToFile</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="areportsDirectory"></a><b><a name="reportsDirectory">&lt;reportsDirectory&gt;</a></b></h4>
        
<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>Default</b>: <tt>${project.build.directory}/surefire-reports</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="arerunFailingTestsCount"></a><b><a name="rerunFailingTestsCount">&lt;rerunFailingTestsCount&gt;</a></b></h4>
        
<div>Flaky tests will re-run until they pass or the number of reruns has
been exhausted. See surefire documentation for details. 

<p>Note: This feature is supported only for JUnit 4.x</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>surefire.rerunFailingTestsCount</tt></li>
          
<li><b>Default</b>: <tt>0</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="arunOrder"></a><b><a name="runOrder">&lt;runOrder&gt;</a></b></h4>
        
<div>Defines the order the tests will be run in. Supported values are
&quot;alphabetical&quot;, &quot;reversealphabetical&quot;, &quot;random&quot;, &quot;hourly&quot;
(alphabetical on even hours, reverse alphabetical on odd hours) and
&quot;filesystem&quot;.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>0.19.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>filesystem</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="ashowEclipseLog"></a><b><a name="showEclipseLog">&lt;showEclipseLog&gt;</a></b></h4>
        
<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>User Property</b>: <tt>tycho.showEclipseLog</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="askip"></a><b><a name="skip">&lt;skip&gt;</a></b></h4>
        
<div>Same as <tt>skipTests</tt></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.Boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>maven.test.skip</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="askipAfterFailureCount"></a><b><a name="skipAfterFailureCount">&lt;skipAfterFailureCount&gt;</a></b></h4>
        
<div>Skips the remaining tests after the Nth failure or error. See
surefire documentation for details.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.Integer</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>surefire.skipAfterFailureCount</tt></li>
          
<li><b>Default</b>: <tt>0</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="askipExec"></a><b><a name="skipExec">&lt;skipExec&gt;</a></b></h4>
        
<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>User Property</b>: <tt>maven.test.skipExec</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="askipTests"></a><b><a name="skipTests">&lt;skipTests&gt;</a></b></h4>
        
<div>Set this to &quot;true&quot; to skip running tests, but still compile them.
Its use is NOT RECOMMENDED, but quite convenient on occasion.
Default: <tt>false</tt></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.Boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>skipTests</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="asuiteXmlFiles"></a><b><a name="suiteXmlFiles">&lt;suiteXmlFiles&gt;</a></b></h4>
        
<div>Only supported by the TestNG test provider. The values specified
are passed to TestNG as test suite files. The suite files will
overwrite the <tt>includes</tt> and <tt>excludes</tt>
patterns. The path to the suite file(s) could be relative (test
bundle classpath) or an absolute path to xml files outside the test
bundle. 

<div>
<pre>
&lt;configuration&gt;
  &lt;suiteXmlFiles&gt;
    &lt;suiteXmlFile&gt;myTestSuite.xml&lt;/suiteXmlFile&gt;
  &lt;/suiteXmlFiles&gt;
&lt;/configuration&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.List</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="asurefireProperties"></a><b><a name="surefireProperties">&lt;surefireProperties&gt;</a></b></h4>
        
<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}/surefire.properties</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="asystemProperties"></a><b><a name="systemProperties">&lt;systemProperties&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="atest"></a><b><a name="test">&lt;test&gt;</a></b></h4>
        
<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>User Property</b>: <tt>test</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestClass"></a><b><a name="testClass">&lt;testClass&gt;</a></b></h4>
        
<div>Identifies a single test (suite) class to run. This is useful if
you have a single JUnit test suite class defining which tests
should be executed. Will be ignored if <tt>test</tt> is
specified. Example: 

<div>
<pre>
&lt;testClass&gt;foo.bar.FooTest&lt;/testClass&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>testClass</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestClassesDirectory"></a><b><a name="testClassesDirectory">&lt;testClassesDirectory&gt;</a></b></h4>
        
<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>No</tt></li>
          
<li><b>User Property</b>: <tt>project.build.outputDirectory</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestFailureIgnore"></a><b><a name="testFailureIgnore">&lt;testFailureIgnore&gt;</a></b></h4>
        
<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>User Property</b>: <tt>maven.test.failure.ignore</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestRuntime"></a><b><a name="testRuntime">&lt;testRuntime&gt;</a></b></h4>
        
<div>How to create the OSGi test runtime. Allowed values are
<tt>default</tt> and <tt>p2Installed</tt>. Mode
<tt>p2Installed</tt> is <b>EXPERIMENTAL</b> - only works when
installing products under test (see below). 

<ul>

<li>In <tt>default</tt> mode, all necessary files to define the
test runtime like <tt>config.ini</tt> are generated by tycho. This
installation mode has the advantage that the test runtime is
minimal (defined by the transitive dependencies of the test bundle
plus and the test harness) and existing bundle jars are referenced
rather than copied for the installation</li>

<li>In <tt>p2Installed</tt> mode, use p2 director to install
test bundle, test harness bundles and respective dependencies. This
installation mode can be used for integration tests that require a
fully p2-provisioned installation. To install a product IU, add it
as extra requirement to the test bundle (see example below). Note
that this installation mode comes with a certain performance
overhead for executing the provisioning operations otherwise not
required.</li>
</ul>
Example configuration which will install product IU under test
&quot;example.product.id&quot; using p2: 

<div>
<pre>
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;testRuntime&gt;p2Installed&lt;/testRuntime&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
&lt;plugin&gt;
   &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
   &lt;artifactId&gt;target-platform-configuration&lt;/artifactId&gt;
   &lt;version&gt;${tycho-version}&lt;/version&gt;
   &lt;configuration&gt;
      &lt;dependency-resolution&gt;
         &lt;extraRequirements&gt;
            &lt;!-- product IU under test --&gt;
            &lt;requirement&gt;
               &lt;type&gt;p2-installable-unit&lt;/type&gt;
               &lt;id&gt;example.product.id&lt;/id&gt;
               &lt;versionRange&gt;0.0.0&lt;/versionRange&gt;
            &lt;/requirement&gt;
         &lt;/extraRequirements&gt;
      &lt;/dependency-resolution&gt;
   &lt;/configuration&gt;
&lt;/plugin&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>0.19.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>default</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="athreadCount"></a><b><a name="threadCount">&lt;threadCount&gt;</a></b></h4>
        
<div>(JUnit 4.7 provider) The attribute thread-count allows you to
specify how many threads should be allocated for this execution.
Only makes sense to use in conjunction with the parallel parameter.</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>threadCount</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atrimStackTrace"></a><b><a name="trimStackTrace">&lt;trimStackTrace&gt;</a></b></h4>
        
<div>When <tt>true</tt>, stack traces are trimmed to only show lines
within the test.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.3.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>trimStackTrace</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="auseJDK"></a><b><a name="useJDK">&lt;useJDK&gt;</a></b></h4>
        
<div>Which JDK to use for executing tests. Possible values are:
<tt>SYSTEM</tt>, <tt>BREE</tt> . 

<ul>

<li>SYSTEM: Use the currently running JVM (or from <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">toolchain</a>
if configured in pom.xml)</li>

<li>BREE: use MANIFEST header
<tt>Bundle-RequiredExecutionEnvironment</tt> to lookup the JDK
from <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-using-toolchains.html">toolchains.xml</a>.
The value of BREE will be matched against the id of the toolchain
elements in toolchains.xml.</li>
</ul>
Example for BREE: <br />
In <tt>META-INF/MANIFEST.MF</tt>: 

<div>
<pre>
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
</pre></div>

In toolchains.xml: 

<div>
<pre>
&lt;toolchains&gt;
   &lt;toolchain&gt;
      &lt;type&gt;jdk&lt;/type&gt;
      &lt;provides&gt;
         &lt;id&gt;JavaSE-1.7&lt;/id&gt;
      &lt;/provides&gt;
      &lt;configuration&gt;
         &lt;jdkHome&gt;/path/to/jdk/1.7&lt;/jdkHome&gt;
      &lt;/configuration&gt;
   &lt;/toolchain&gt;
&lt;/toolchains&gt;
</pre></div></div>
        
<ul>
          
<li><b>Type</b>: <tt>org.eclipse.tycho.core.maven.ToolchainProvider$JDKUsage</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>SYSTEM</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="auseUIHarness"></a><b><a name="useUIHarness">&lt;useUIHarness&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="auseUIThread"></a><b><a name="useUIThread">&lt;useUIThread&gt;</a></b></h4>
        
<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 /></div>
<div class="section">
<h4><a name="auseUnlimitedThreads"></a><b><a name="useUnlimitedThreads">&lt;useUnlimitedThreads&gt;</a></b></h4>
        
<div>(JUnit 4.7 provider) Indicates that the thread pool will be
unlimited. The parallel parameter and the actual number of
classes/methods will decide. Setting this to &quot;true&quot; effectively
disables perCoreThreadCount and threadCount.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>0.16.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>useUnlimitedThreads</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="awork"></a><b><a name="work">&lt;work&gt;</a></b></h4>
        
<div>Root directory (<a class="externalLink" href="http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstallarea">osgi.install.area</a>)
of the Equinox runtime used to execute tests.</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>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2008-2018
                        <a href="http://www.eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>
