<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from target/generated-site/xdoc/test-mojo.xml at 2022-02-28
 | Rendered using Apache Maven Fluido Skin 1.10.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <title>Tycho Surefire Plugin &#x2013; tycho-surefire:test</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.10.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.10.0.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <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: 2022-02-28<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.7.0</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Tycho</li>
    <li><a href="../index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../target-platform-configuration/plugin-info.html" title="Target Platform Configuration"><span class="none"></span>Target Platform Configuration</a></li>
    <li><a href="../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin"><span class="none"></span>Compiler Plugin</a></li>
    <li><a href="../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin"><span class="none"></span>Packaging Plugin</a></li>
    <li><a href="../tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin"><span class="none"></span>Surefire Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin"><span class="none"></span>p2 Publisher Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin"><span class="none"></span>p2 Repository Plugin</a></li>
    <li><a href="../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin"><span class="none"></span>p2 Director Plugin</a></li>
    <li><a href="../tycho-source-plugin/plugin-info.html" title="Source Plugin"><span class="none"></span>Source Plugin</a></li>
    <li><a href="../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin"><span class="none"></span>Versions Plugin</a></li>
    <li><a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin"><span class="none"></span>POM Generator Plugin</a></li>
    <li><a href="" title="Properties"><span class="icon-chevron-down"></span>Properties</a>
     <ul class="nav nav-list">
      <li><a href="../BuildProperties.html" title="Build Properties"><span class="none"></span>Build Properties</a></li>
      <li><a href="../TychoProperties.html" title="Tycho Properties"><span class="none"></span>Tycho Properties</a></li>
     </ul></li>
   <li class="nav-header">Tycho Extras</li>
    <li><a href="../tycho-extras/index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../tycho-extras/tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin"><span class="none"></span>P2 Extras Plugin</a></li>
    <li><a href="../tycho-extras/target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin"><span class="none"></span>Target Platform Validation Plugin</a></li>
    <li><a href="../tycho-extras/tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin"><span class="none"></span>Eclipserun Plugin</a></li>
    <li><a href="../tycho-extras/tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin"><span class="none"></span>Document Bundle Plugin</a></li>
    <li><a href="../tycho-extras/tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin"><span class="none"></span>Source Feature Generation Plugin</a></li>
    <li><a href="../tycho-extras/tycho-pack200/index.html" title="Pack200 Plugins"><span class="icon-chevron-down"></span>Pack200 Plugins</a>
     <ul class="nav nav-list">
      <li><a href="../tycho-extras/tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin"><span class="none"></span>Normalization Plugin</a></li>
      <li><a href="../tycho-extras/tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin"><span class="none"></span>Pack Plugin</a></li>
     </ul></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <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>
        </header>
        <main id="bodyColumn"  class="span10" >

  
    <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:2.7.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. <code>org.apache.felix.scr</code>
to make declarative services work), they need to be added manually
through an <code>extraRequirements</code> configuration on the
<code>target-platform-configuration</code> 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: <code>runtime</code>.</li>
        
<li>The goal is thread-safe and supports parallel builds.</li>
        
<li>Binds by default to the <a class="externalLink" href="http://maven.apache.org/ref/current/maven-core/lifecycles.html">lifecycle phase</a>: <code>integration-test</code>.</li>
      </ul>
      <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 align="left"><code><a href="#appArgLine">&lt;appArgLine&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></td>
            
<td>Arbitrary applications arguments to set on the command line.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#application">&lt;application&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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 align="left"><code><a href="#argLine">&lt;argLine&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></td>
            
<td>Arbitrary JVM options to set on the command line.<br /><b>User property is</b>: <code>tycho.testArgLine</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#bundleStartLevel">&lt;bundleStartLevel&gt;</a></code></td>
            
<td><code>BundleStartLevel[]</code></td>
            
<td><code>-</code></td>
            
<td>Bundle start level and auto start configuration used by the test
runtime. Ignored if <code>testRuntime</code> is
<code>p2Installed</code>. 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 align="left"><code><a href="#debugOptions">&lt;debugOptions&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></td>
            
<td>if set to a non-null value, the platform is put in debug mode. If
the value is a non-empty string it is interpreted as the location
of the .options file. This file indicates what debug points are
available for a plug-in and whether or not they are enabled. for a
list of available options see <a class="externalLink" href="https://git.eclipse.org/c/equinox/rt.equinox.framework.git/plain/bundles/org.eclipse.osgi/.options">https://git.eclipse.org/c/equinox/rt.equinox.framework.git/plain/bundles/org.eclipse.osgi/.options</a><br /><b>User property is</b>: <code>osgi.debug</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#debugPort">&lt;debugPort&gt;</a></code></td>
            
<td><code>int</code></td>
            
<td><code>-</code></td>
            
<td>Set this parameter to suspend the test JVM waiting for a client to
open a remote debug session on the specified port. If further
customization of JVM debug parameters is required then
<code>argLine</code> can be used instead.<br /><b>User property is</b>: <code>debugPort</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#defaultStartLevel">&lt;defaultStartLevel&gt;</a></code></td>
            
<td><code>BundleStartLevel</code></td>
            
<td><code>-</code></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 <code>bundleStartLevel</code>. Ignored if
<code>testRuntime</code> is <code>p2Installed</code>. 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="a">
            
<td align="left"><code><a href="#deleteOsgiDataDirectory">&lt;deleteOsgiDataDirectory&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>Whether to recursively delete the directory
<code>osgiDataDirectory</code> before running the tests.<br /><b>Default value is</b>: <code>true</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#dependencies">&lt;dependencies&gt;</a></code></td>
            
<td><code>Dependency[]</code></td>
            
<td><code>-</code></td>
            
<td>Additional dependencies to be added to the test runtime. Ignored if
<code>testRuntime</code> is <code>p2Installed</code>. Note: This
parameter has only limited support for dependencies to artifacts
within the reactor. Therefore it is recommended to specify
<code>extraRequirements</code> on the
<code>target-platform-configuration</code> 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 <code>extraRequirements</code> are -
together with the dependencies specified in the
<code>MANIFEST.MF</code> 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="a">
            
<td align="left"><code><a href="#enableAssertions">&lt;enableAssertions&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>1.5.0</code></td>
            
<td>By default, Tycho Surefire disables JVM assertions for the
execution of your test cases. To enable the assertions, set this
flag to &quot;true&quot;.<br /><b>Default value is</b>: <code>false</code>.<br /><b>User property is</b>: <code>enableAssertions</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#environmentVariables">&lt;environmentVariables&gt;</a></code></td>
            
<td><code>Map</code></td>
            
<td><code>-</code></td>
            
<td>Additional environments to set for the forked test JVM.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#excludedGroups">&lt;excludedGroups&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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>: <code>excludedGroups</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#excludes">&lt;excludes&gt;</a></code></td>
            
<td><code>List</code></td>
            
<td><code>-</code></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
<code>test</code> parameter is not specified, the default excludes
will be <code>**/*$*</code> (which excludes all inner classes).<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#explodedBundles">&lt;explodedBundles&gt;</a></code></td>
            
<td><code>String[]</code></td>
            
<td><code>-</code></td>
            
<td>List of bundles that must be expanded in order to execute the
tests. Ignored if <code>testRuntime</code> is
<code>p2Installed</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#failIfNoTests">&lt;failIfNoTests&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></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>: <code>true</code>.<br /><b>User property is</b>: <code>failIfNoTests</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#forkedProcessTimeoutInSeconds">&lt;forkedProcessTimeoutInSeconds&gt;</a></code></td>
            
<td><code>int</code></td>
            
<td><code>-</code></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>: <code>surefire.timeout</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#frameworkExtensions">&lt;frameworkExtensions&gt;</a></code></td>
            
<td><code>Dependency[]</code></td>
            
<td><code>-</code></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 <code>testRuntime</code> is
<code>p2Installed</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#groups">&lt;groups&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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>: <code>groups</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#includes">&lt;includes&gt;</a></code></td>
            
<td><code>List</code></td>
            
<td><code>-</code></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
<code>test</code> parameter is not specified, the default includes
will be <code>**/Test*.java **/*Test.java **/*Tests.java
**/*TestCase.java</code><br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#osgiDataDirectory">&lt;osgiDataDirectory&gt;</a></code></td>
            
<td><code>File</code></td>
            
<td><code>-</code></td>
            
<td><a class="externalLink" href="https://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<code>osgi.instance.area</code>, aka the
workspace) of the Equinox runtime used to execute tests.<br /><b>Default value is</b>: <code>${project.build.directory}/work/data/</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#parallel">&lt;parallel&gt;</a></code></td>
            
<td><code>ParallelMode</code></td>
            
<td><code>0.16.0</code></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>: <code>parallel</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#perCoreThreadCount">&lt;perCoreThreadCount&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>0.16.0</code></td>
            
<td>(JUnit 4.7 provider) Indicates that threadCount is per cpu core.<br /><b>Default value is</b>: <code>true</code>.<br /><b>User property is</b>: <code>perCoreThreadCount</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#pluginArtifacts">&lt;pluginArtifacts&gt;</a></code></td>
            
<td><code>List</code></td>
            
<td><code>-</code></td>
            
<td>(no description)<br /><b>User property is</b>: <code>plugin.artifacts</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#printBundles">&lt;printBundles&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>prints all loaded bundles<br /><b>Default value is</b>: <code>false</code>.<br /><b>User property is</b>: <code>tycho.printBundles</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#product">&lt;product&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></td>
            
<td>Eclipse product to be run, i.e. -product parameter passed to test
Eclipse runtime.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#profileName">&lt;profileName&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>0.19.0</code></td>
            
<td>p2 <a class="externalLink" href="https://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
<code>testRuntime</code> is <code>p2Installed</code>. If tests are
installed on top of an already existing installation in
<code>work</code>, this must match the name of the existing
profile.<br /><b>Default value is</b>: <code>DefaultProfile</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#providerHint">&lt;providerHint&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>0.16.0</code></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;,&quot;junit5&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="a">
            
<td align="left"><code><a href="#providerProperties">&lt;providerProperties&gt;</a></code></td>
            
<td><code>Properties</code></td>
            
<td><code>0.16.0</code></td>
            
<td>Use this to specify surefire provider-specific properties.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#redirectTestOutputToFile">&lt;redirectTestOutputToFile&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></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>: <code>false</code>.<br /><b>User property is</b>: <code>maven.test.redirectTestOutputToFile</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#reportsDirectory">&lt;reportsDirectory&gt;</a></code></td>
            
<td><code>File</code></td>
            
<td><code>-</code></td>
            
<td>Base directory where all reports are written to.<br /><b>Default value is</b>: <code>${project.build.directory}/surefire-reports</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#rerunFailingTestsCount">&lt;rerunFailingTestsCount&gt;</a></code></td>
            
<td><code>Integer</code></td>
            
<td><code>-</code></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>: <code>0</code>.<br /><b>User property is</b>: <code>surefire.rerunFailingTestsCount</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#runOrder">&lt;runOrder&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>0.19.0</code></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>: <code>filesystem</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#showEclipseLog">&lt;showEclipseLog&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>Enables -consolelog for the test OSGi runtime<br /><b>Default value is</b>: <code>false</code>.<br /><b>User property is</b>: <code>tycho.showEclipseLog</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#skip">&lt;skip&gt;</a></code></td>
            
<td><code>Boolean</code></td>
            
<td><code>-</code></td>
            
<td>Same as <code>skipTests</code><br /><b>User property is</b>: <code>maven.test.skip</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#skipAfterFailureCount">&lt;skipAfterFailureCount&gt;</a></code></td>
            
<td><code>Integer</code></td>
            
<td><code>-</code></td>
            
<td>Skips the remaining tests after the Nth failure or error. See
surefire documentation for details.<br /><b>Default value is</b>: <code>0</code>.<br /><b>User property is</b>: <code>surefire.skipAfterFailureCount</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#skipExec">&lt;skipExec&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td><b>Deprecated.</b> Use skipTests instead.<br /><b>User property is</b>: <code>maven.test.skipExec</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#skipTests">&lt;skipTests&gt;</a></code></td>
            
<td><code>Boolean</code></td>
            
<td><code>-</code></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: <code>false</code><br /><b>User property is</b>: <code>skipTests</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#suiteXmlFiles">&lt;suiteXmlFiles&gt;</a></code></td>
            
<td><code>List</code></td>
            
<td><code>-</code></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 <code>includes</code> and <code>excludes</code>
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="b">
            
<td align="left"><code><a href="#surefireProperties">&lt;surefireProperties&gt;</a></code></td>
            
<td><code>File</code></td>
            
<td><code>-</code></td>
            
<td>(no description)<br /><b>Default value is</b>: <code>${project.build.directory}/surefire.properties</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#systemProperties">&lt;systemProperties&gt;</a></code></td>
            
<td><code>Map</code></td>
            
<td><code>-</code></td>
            
<td>Additional system properties to set for the forked test JVM.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#test">&lt;test&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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
<code>**/${test}.java</code> When used, the <code>includes</code>
and <code>excludes</code> patterns parameters are ignored<br /><b>User property is</b>: <code>test</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#testClass">&lt;testClass&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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 <code>test</code> is
specified. Example: 

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

<ul>

<li>In <code>default</code> mode, all necessary files to define the
test runtime like <code>config.ini</code> 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 <code>p2Installed</code> 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>: <code>default</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#threadCount">&lt;threadCount&gt;</a></code></td>
            
<td><code>int</code></td>
            
<td><code>0.16.0</code></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>: <code>threadCount</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#trimStackTrace">&lt;trimStackTrace&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>1.3.0</code></td>
            
<td>When <code>true</code>, stack traces are trimmed to only show lines
within the test.<br /><b>Default value is</b>: <code>true</code>.<br /><b>User property is</b>: <code>trimStackTrace</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#useJDK">&lt;useJDK&gt;</a></code></td>
            
<td><code>ToolchainProvider$JDKUsage</code></td>
            
<td><code>-</code></td>
            
<td>Which JDK to use for executing tests. Possible values are:
<code>SYSTEM</code>, <code>BREE</code> . 

<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
<code>Bundle-RequiredExecutionEnvironment</code> 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 <code>META-INF/MANIFEST.MF</code>: 

<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>: <code>SYSTEM</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#useUIHarness">&lt;useUIHarness&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>Run tests using UI (true) or headless (false) test harness.<br /><b>Default value is</b>: <code>false</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#useUIThread">&lt;useUIThread&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>Run tests in UI (true) or background (false) thread. Only applies
to UI test harness.<br /><b>Default value is</b>: <code>true</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#useUnlimitedThreads">&lt;useUnlimitedThreads&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>0.16.0</code></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>: <code>false</code>.<br /><b>User property is</b>: <code>useUnlimitedThreads</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#work">&lt;work&gt;</a></code></td>
            
<td><code>File</code></td>
            
<td><code>-</code></td>
            
<td>Root directory (<a class="externalLink" href="https://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>: <code>${project.build.directory}/work</code>.<br /></td>
          </tr>
        </table>
      </section>
      <section>
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        <section>
<h4><a name="a.3CappArgLine.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Capplication.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CargLine.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>tycho.testArgLine</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CbundleStartLevel.3E"></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 <code>testRuntime</code> is
<code>p2Installed</code>. 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>: <code>org.eclipse.sisu.equinox.launching.BundleStartLevel[]</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CdebugOptions.3E"></a><b><a name="debugOptions">&lt;debugOptions&gt;</a></b></h4>
        
<div>if set to a non-null value, the platform is put in debug mode. If
the value is a non-empty string it is interpreted as the location
of the .options file. This file indicates what debug points are
available for a plug-in and whether or not they are enabled. for a
list of available options see <a class="externalLink" href="https://git.eclipse.org/c/equinox/rt.equinox.framework.git/plain/bundles/org.eclipse.osgi/.options">https://git.eclipse.org/c/equinox/rt.equinox.framework.git/plain/bundles/org.eclipse.osgi/.options</a></div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>osgi.debug</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CdebugPort.3E"></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. If further
customization of JVM debug parameters is required then
<code>argLine</code> can be used instead.</div>
        
<ul>
          
<li><b>Type</b>: <code>int</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>debugPort</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CdefaultStartLevel.3E"></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 <code>bundleStartLevel</code>. Ignored if
<code>testRuntime</code> is <code>p2Installed</code>. 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>: <code>org.eclipse.sisu.equinox.launching.BundleStartLevel</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CdeleteOsgiDataDirectory.3E"></a><b><a name="deleteOsgiDataDirectory">&lt;deleteOsgiDataDirectory&gt;</a></b></h4>
        
<div>Whether to recursively delete the directory
<code>osgiDataDirectory</code> before running the tests.</div>
        
<ul>
          
<li><b>Type</b>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>true</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cdependencies.3E"></a><b><a name="dependencies">&lt;dependencies&gt;</a></b></h4>
        
<div>Additional dependencies to be added to the test runtime. Ignored if
<code>testRuntime</code> is <code>p2Installed</code>. Note: This
parameter has only limited support for dependencies to artifacts
within the reactor. Therefore it is recommended to specify
<code>extraRequirements</code> on the
<code>target-platform-configuration</code> 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 <code>extraRequirements</code> are -
together with the dependencies specified in the
<code>MANIFEST.MF</code> 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>: <code>org.apache.maven.model.Dependency[]</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CenableAssertions.3E"></a><b><a name="enableAssertions">&lt;enableAssertions&gt;</a></b></h4>
        
<div>By default, Tycho Surefire disables JVM assertions for the
execution of your test cases. To enable the assertions, set this
flag to &quot;true&quot;.</div>
        
<ul>
          
<li><b>Type</b>: <code>boolean</code></li>
          
<li><b>Since</b>: <code>1.5.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>enableAssertions</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CenvironmentVariables.3E"></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>: <code>java.util.Map</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CexcludedGroups.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>excludedGroups</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cexcludes.3E"></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
<code>test</code> parameter is not specified, the default excludes
will be <code>**/*$*</code> (which excludes all inner classes).</div>
        
<ul>
          
<li><b>Type</b>: <code>java.util.List</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CexplodedBundles.3E"></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 <code>testRuntime</code> is
<code>p2Installed</code>.</div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.String[]</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CfailIfNoTests.3E"></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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>failIfNoTests</code></li>
          
<li><b>Default</b>: <code>true</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CforkedProcessTimeoutInSeconds.3E"></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>: <code>int</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>surefire.timeout</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CframeworkExtensions.3E"></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 <code>testRuntime</code> is
<code>p2Installed</code>.</div>
        
<ul>
          
<li><b>Type</b>: <code>org.apache.maven.model.Dependency[]</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cgroups.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>groups</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cincludes.3E"></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
<code>test</code> parameter is not specified, the default includes
will be <code>**/Test*.java **/*Test.java **/*Tests.java
**/*TestCase.java</code></div>
        
<ul>
          
<li><b>Type</b>: <code>java.util.List</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CosgiDataDirectory.3E"></a><b><a name="osgiDataDirectory">&lt;osgiDataDirectory&gt;</a></b></h4>
        
<div><a class="externalLink" href="https://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<code>osgi.instance.area</code>, aka the
workspace) of the Equinox runtime used to execute tests.</div>
        
<ul>
          
<li><b>Type</b>: <code>java.io.File</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>${project.build.directory}/work/data/</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cparallel.3E"></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>: <code>org.eclipse.tycho.surefire.ParallelMode</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>parallel</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CperCoreThreadCount.3E"></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>: <code>boolean</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>perCoreThreadCount</code></li>
          
<li><b>Default</b>: <code>true</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CpluginArtifacts.3E"></a><b><a name="pluginArtifacts">&lt;pluginArtifacts&gt;</a></b></h4>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <code>java.util.List</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>plugin.artifacts</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CprintBundles.3E"></a><b><a name="printBundles">&lt;printBundles&gt;</a></b></h4>
        
<div>prints all loaded bundles</div>
        
<ul>
          
<li><b>Type</b>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>tycho.printBundles</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cproduct.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CprofileName.3E"></a><b><a name="profileName">&lt;profileName&gt;</a></b></h4>
        
<div>p2 <a class="externalLink" href="https://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
<code>testRuntime</code> is <code>p2Installed</code>. If tests are
installed on top of an already existing installation in
<code>work</code>, this must match the name of the existing
profile.</div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.String</code></li>
          
<li><b>Since</b>: <code>0.19.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>DefaultProfile</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CproviderHint.3E"></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;,&quot;junit5&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>: <code>java.lang.String</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CproviderProperties.3E"></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>: <code>java.util.Properties</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CredirectTestOutputToFile.3E"></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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>maven.test.redirectTestOutputToFile</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CreportsDirectory.3E"></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>: <code>java.io.File</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>${project.build.directory}/surefire-reports</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CrerunFailingTestsCount.3E"></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>: <code>java.lang.Integer</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>surefire.rerunFailingTestsCount</code></li>
          
<li><b>Default</b>: <code>0</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CrunOrder.3E"></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>: <code>java.lang.String</code></li>
          
<li><b>Since</b>: <code>0.19.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>filesystem</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CshowEclipseLog.3E"></a><b><a name="showEclipseLog">&lt;showEclipseLog&gt;</a></b></h4>
        
<div>Enables -consolelog for the test OSGi runtime</div>
        
<ul>
          
<li><b>Type</b>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>tycho.showEclipseLog</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cskip.3E"></a><b><a name="skip">&lt;skip&gt;</a></b></h4>
        
<div>Same as <code>skipTests</code></div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.Boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>maven.test.skip</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CskipAfterFailureCount.3E"></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>: <code>java.lang.Integer</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>surefire.skipAfterFailureCount</code></li>
          
<li><b>Default</b>: <code>0</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CskipExec.3E"></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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>maven.test.skipExec</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CskipTests.3E"></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: <code>false</code></div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.Boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>skipTests</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CsuiteXmlFiles.3E"></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 <code>includes</code> and <code>excludes</code>
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>: <code>java.util.List</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CsurefireProperties.3E"></a><b><a name="surefireProperties">&lt;surefireProperties&gt;</a></b></h4>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <code>java.io.File</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>${project.build.directory}/surefire.properties</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CsystemProperties.3E"></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>: <code>java.util.Map</code></li>
          
<li><b>Required</b>: <code>No</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Ctest.3E"></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
<code>**/${test}.java</code> When used, the <code>includes</code>
and <code>excludes</code> patterns parameters are ignored</div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>test</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CtestClass.3E"></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 <code>test</code> is
specified. Example: 

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

<ul>

<li>In <code>default</code> mode, all necessary files to define the
test runtime like <code>config.ini</code> 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 <code>p2Installed</code> 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>: <code>java.lang.String</code></li>
          
<li><b>Since</b>: <code>0.19.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>default</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CthreadCount.3E"></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>: <code>int</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>threadCount</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CtrimStackTrace.3E"></a><b><a name="trimStackTrace">&lt;trimStackTrace&gt;</a></b></h4>
        
<div>When <code>true</code>, stack traces are trimmed to only show lines
within the test.</div>
        
<ul>
          
<li><b>Type</b>: <code>boolean</code></li>
          
<li><b>Since</b>: <code>1.3.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>trimStackTrace</code></li>
          
<li><b>Default</b>: <code>true</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CuseJDK.3E"></a><b><a name="useJDK">&lt;useJDK&gt;</a></b></h4>
        
<div>Which JDK to use for executing tests. Possible values are:
<code>SYSTEM</code>, <code>BREE</code> . 

<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
<code>Bundle-RequiredExecutionEnvironment</code> 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 <code>META-INF/MANIFEST.MF</code>: 

<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>: <code>org.eclipse.tycho.core.maven.ToolchainProvider$JDKUsage</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>SYSTEM</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CuseUIHarness.3E"></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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CuseUIThread.3E"></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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>true</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CuseUnlimitedThreads.3E"></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>: <code>boolean</code></li>
          
<li><b>Since</b>: <code>0.16.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>useUnlimitedThreads</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cwork.3E"></a><b><a name="work">&lt;work&gt;</a></b></h4>
        
<div>Root directory (<a class="externalLink" href="https://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>: <code>java.io.File</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>Default</b>: <code>${project.build.directory}/work</code></li>
        </ul>
      </section></section>
    </section>
  

        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>&#169;      2008&#x2013;2022
<a href="http://www.eclipse.org/">Eclipse Foundation</a>
</p>
        </div>
      </div>
    </footer>
<script>
	if(anchors) {
	  anchors.add();
	}
</script>
  </body>
</html>
