<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 from target/generated-site/xdoc/test-mojo.xml at 2021-01-11
 | Rendered using Apache Maven Fluido Skin 1.9
-->
<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.9.2" />
    <title>Tycho Surefire Plugin &#x2013; tycho-surefire:test</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.9.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.9.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: 2021-01-11<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.2.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.2.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>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><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><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><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><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><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.<br /><b>User property is</b>: <code>debugPort</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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="a">
            
<td><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="b">
            
<td><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><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><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><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><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><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><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><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><code><a href="#showEclipseLog">&lt;showEclipseLog&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></td>
            
<td>Enables -debug -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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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.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.</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.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 -debug -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;2021
<a href="http://www.eclipse.org/">Eclipse Foundation</a>
</p>
        </div>
      </div>
    </footer>
  </body>
</html>
