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

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

    
            </head>
        <body class="topBarDisabled">
          
        
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Tycho Surefire Plugin (Incubation)</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: 2013-05-29</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 0.18.0</li>
                      
                
            
      
                                              
    <li class="pull-right">              <a href="http://wiki.eclipse.org/Development_Resources/HOWTO/Incubation_Phase#.281.29_What_Is_Incubation.3F" class="externalLink" title="This content is PRELIMINARY API and still subject to change">
        This content is PRELIMINARY API and still subject to change</a>
  </li>

                        </ul>
      </div>

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

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            
  
    <div class="section"><h2>tycho-surefire:test<a name="tycho-surefire:test"></a></h2>
      <p><b>Full name</b>:</p>
      <p>org.eclipse.tycho:tycho-surefire-plugin:0.18.0:test</p>
      <p><b>Description</b>:</p>
      <div><p>Executes tests in an OSGi runtime.</p>
<p>The goal launches an OSGi runtime and executes the project's
tests in that runtime. The &quot;test runtime&quot; consists of the bundle
built in this project and its transitive dependencies, plus some
Equinox and test harness bundles. The bundles are resolved from the
target platform of the project. Note that the test runtime does
typically <i>not</i> contain the entire target platform. If there
are implicitly required bundles (e.g.
<tt>org.eclipse.equinox.ds</tt> to make declarative services work),
they need to be added manually through an explicit
<tt>dependencies</tt> configuration.</p></div>
      <p><b>Attributes</b>:</p>
      <ul>
        <li>Requires a Maven project to be executed.</li>
        <li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
        <li>Binds by default to the lifecycle phase: <tt>integration-test</tt>.</li>
      </ul>
      <div class="section"><h3>Optional Parameters<a name="Optional_Parameters"></a></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><b><a href="#appArgLine">appArgLine</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>Arbitrary applications arguments to set on the command line.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#application">application</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>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.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#argLine">argLine</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>Arbitrary JVM options to set on the command line.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#bundleStartLevel">bundleStartLevel</a></b></td>
            <td><tt>BundleStartLevel[]</tt></td>
            <td><tt>-</tt></td>
            <td><p>Bundle start level and auto start configuration used by the test
runtime.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#debugPort">debugPort</a></b></td>
            <td><tt>int</tt></td>
            <td><tt>-</tt></td>
            <td><p>Set this parameter to suspend the test JVM waiting for a client
to open a remote debug session on the specified port.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#deleteOsgiDataDirectory">deleteOsgiDataDirectory</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td>Whether to recursively delete the directory
<tt>osgiDataDirectory</tt> before running the tests.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#dependencies">dependencies</a></b></td>
            <td><tt>Dependency[]</tt></td>
            <td><tt>-</tt></td>
            <td><p>Additional dependencies to be added to the test runtime.</p>
<p>The dependencies specified here are - together with the
dependencies specified in the <tt>MANIFEST.MF</tt> of the project -
resolved against the target platform. The resulting set of bundles
is included in the test runtime.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#environmentVariables">environmentVariables</a></b></td>
            <td><tt>Map</tt></td>
            <td><tt>-</tt></td>
            <td><p>Additional environments to set for the forked test JVM.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#excludes">excludes</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td><p>List of patterns (separated by commas) used to specify the tests
that should be excluded in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
excludes will be <tt>**/Abstract*Test.java
**/Abstract*TestCase.java **/*$*</tt></p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#explodedBundles">explodedBundles</a></b></td>
            <td><tt>String[]</tt></td>
            <td><tt>-</tt></td>
            <td><p>List of bundles that must be expanded in order to execute the
tests</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#failIfNoTests">failIfNoTests</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>If set to &quot;false&quot; the test execution will not fail in case there
are no tests found.</p><br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a></b></td>
            <td><tt>int</tt></td>
            <td><tt>-</tt></td>
            <td><p>Kill the forked test process after a certain number of seconds.
If set to 0, wait forever for the process, never timing out.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#frameworkExtensions">frameworkExtensions</a></b></td>
            <td><tt>Dependency[]</tt></td>
            <td><tt>-</tt></td>
            <td><p>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.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#includes">includes</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td><p>List of patterns (separated by commas) used to specify the tests
that should be included in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
includes will be <tt>**/Test*.java **/*Test.java
**/*TestCase.java</tt></p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#osgiDataDirectory">osgiDataDirectory</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td><a class="externalLink" href="http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<tt>osgi.instance.area</tt>, aka the
workspace) of the Equinox runtime used to execute tests.<br /><b>Default value is</b>: <tt>${project.build.directory}/work/data/</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#parallel">parallel</a></b></td>
            <td><tt>ParallelMode</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>(JUnit 4.7 provider) Supports values &quot;classes&quot;/&quot;methods&quot;/&quot;both&quot;
to run in separate threads, as controlled by threadCount.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#perCoreThreadCount">perCoreThreadCount</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>(JUnit 4.7 provider) Indicates that threadCount is per cpu
core.</p><br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#pluginArtifacts">pluginArtifacts</a></b></td>
            <td><tt>List</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#product">product</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>Eclipse product to be run, i.e. -product parameter passed to
test Eclipse runtime.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#providerHint">providerHint</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>Normally tycho will automatically determine the test framework
provider based on the test project's classpath. Use this to force
using a test framework provider implementation with the given role
hint. Tycho comes with providers &quot;junit3&quot;,&quot;junit4&quot;,&quot;junit47&quot;. Note
that when specifying a providerHint, you have to make sure the
provider is actually available in the dependencies of
tycho-surefire-plugin.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#providerProperties">providerProperties</a></b></td>
            <td><tt>Properties</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>Use this to specify surefire provider-specific properties.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#redirectTestOutputToFile">redirectTestOutputToFile</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Set this to &quot;true&quot; to redirect the unit test standard output to
a file (found in reportsDirectory/testName-output.txt).</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#reportsDirectory">reportsDirectory</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td><p>Base directory where all reports are written to.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#showEclipseLog">showEclipseLog</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Enables -debug -consolelog for the test OSGi runtime</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#skip">skip</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Same as <tt>skipTests</tt></p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#skipExec">skipExec</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><b>Deprecated.</b> Use skipTests instead.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#skipTests">skipTests</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Set this to &quot;true&quot; to skip running tests, but still compile
them. Its use is NOT RECOMMENDED, but quite convenient on
occasion.</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#surefireProperties">surefireProperties</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td>(no description)<br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#systemProperties">systemProperties</a></b></td>
            <td><tt>Map</tt></td>
            <td><tt>-</tt></td>
            <td><p>Additional system properties to set for the forked test JVM.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#test">test</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>Specify this parameter if you want to use the test pattern
matching notation, Ant pattern matching, to select tests to run.
The Ant pattern will be used to create an include pattern formatted
like <tt>**/${test}.java</tt> When used, the
<tt>includes</tt> and <tt>excludes</tt> patterns parameters
are ignored</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#testClass">testClass</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>See testSuite</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#testClassesDirectory">testClassesDirectory</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td><p>The directory containing generated test classes of the project
being tested.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#testFailureIgnore">testFailureIgnore</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Set this to true to ignore a failure during testing. Its use is
NOT RECOMMENDED, but quite convenient on occasion.</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#testSuite">testSuite</a></b></td>
            <td><tt>String</tt></td>
            <td><tt>-</tt></td>
            <td><p>Bundle-SymbolicName of the test suite, a special bundle that
knows how to locate and execute all relevant tests.</p>
<p>testSuite and testClass identify single test class to run. All
other tests will be ignored if both testSuite and testClass are
provided. It is an error if provide one of the two parameters but
not the other.</p><br /></td>
          </tr>
          <tr class="b">
            <td><b><a href="#threadCount">threadCount</a></b></td>
            <td><tt>int</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>(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.</p><br /></td>
          </tr>
          <tr class="a">
            <td><b><a href="#useUIHarness">useUIHarness</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Run tests using UI (true) or headless (false) test harness.</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#useUIThread">useUIThread</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>-</tt></td>
            <td><p>Run tests in UI (true) or background (false) thread. Only
applies to UI test harness.</p><br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          <tr class="a">
            <td><b><a href="#useUnlimitedThreads">useUnlimitedThreads</a></b></td>
            <td><tt>boolean</tt></td>
            <td><tt>0.16.0</tt></td>
            <td><p>(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.</p><br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          <tr class="b">
            <td><b><a href="#work">work</a></b></td>
            <td><tt>File</tt></td>
            <td><tt>-</tt></td>
            <td><p>Root directory (<a class="externalLink" href="http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstallarea">osgi.install.area</a>)
of the Equinox runtime used to execute tests.</p><br /><b>Default value is</b>: <tt>${project.build.directory}/work</tt>.</td>
          </tr>
        </table>
      </div>
      <div class="section"><h3>Parameter Details<a name="Parameter_Details"></a></h3>
        <p><b><a name="appArgLine">appArgLine</a>:</b></p>
        <div><p>Arbitrary applications arguments to set on the command line.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="application">application</a>:</b></p>
        <div><p>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.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="argLine">argLine</a>:</b></p>
        <div><p>Arbitrary JVM options to set on the command line.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${tycho.testArgLine}</tt></li>
        </ul><hr /><p><b><a name="bundleStartLevel">bundleStartLevel</a>:</b></p>
        <div><p>Bundle start level and auto start configuration used by the test
runtime.</p></div>
        <ul>
          <li><b>Type</b>: <tt>org.eclipse.sisu.equinox.launching.BundleStartLevel[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="debugPort">debugPort</a>:</b></p>
        <div><p>Set this parameter to suspend the test JVM waiting for a client
to open a remote debug session on the specified port.</p></div>
        <ul>
          <li><b>Type</b>: <tt>int</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${debugPort}</tt></li>
        </ul><hr /><p><b><a name="deleteOsgiDataDirectory">deleteOsgiDataDirectory</a>:</b></p>
        <div>Whether to recursively delete the directory
<tt>osgiDataDirectory</tt> before running the tests.</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="dependencies">dependencies</a>:</b></p>
        <div><p>Additional dependencies to be added to the test runtime.</p>
<p>The dependencies specified here are - together with the
dependencies specified in the <tt>MANIFEST.MF</tt> of the project -
resolved against the target platform. The resulting set of bundles
is included in the test runtime.</p></div>
        <ul>
          <li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="environmentVariables">environmentVariables</a>:</b></p>
        <div><p>Additional environments to set for the forked test JVM.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.Map</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="excludes">excludes</a>:</b></p>
        <div><p>List of patterns (separated by commas) used to specify the tests
that should be excluded in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
excludes will be <tt>**/Abstract*Test.java
**/Abstract*TestCase.java **/*$*</tt></p></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="explodedBundles">explodedBundles</a>:</b></p>
        <div><p>List of bundles that must be expanded in order to execute the
tests</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="failIfNoTests">failIfNoTests</a>:</b></p>
        <div><p>If set to &quot;false&quot; the test execution will not fail in case there
are no tests found.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${failIfNoTests}</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="forkedProcessTimeoutInSeconds">forkedProcessTimeoutInSeconds</a>:</b></p>
        <div><p>Kill the forked test process after a certain number of seconds.
If set to 0, wait forever for the process, never timing out.</p></div>
        <ul>
          <li><b>Type</b>: <tt>int</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${surefire.timeout}</tt></li>
        </ul><hr /><p><b><a name="frameworkExtensions">frameworkExtensions</a>:</b></p>
        <div><p>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.</p></div>
        <ul>
          <li><b>Type</b>: <tt>org.apache.maven.model.Dependency[]</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="includes">includes</a>:</b></p>
        <div><p>List of patterns (separated by commas) used to specify the tests
that should be included in testing. When not specified and whent
the <tt>test</tt> parameter is not specified, the default
includes will be <tt>**/Test*.java **/*Test.java
**/*TestCase.java</tt></p></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="osgiDataDirectory">osgiDataDirectory</a>:</b></p>
        <div><a class="externalLink" href="http://help.eclipse.org/juno/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstancearea">OSGi
data directory</a> (<tt>osgi.instance.area</tt>, aka the
workspace) of the Equinox runtime used to execute tests.</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>${project.build.directory}/work/data/</tt></li>
        </ul><hr /><p><b><a name="parallel">parallel</a>:</b></p>
        <div><p>(JUnit 4.7 provider) Supports values &quot;classes&quot;/&quot;methods&quot;/&quot;both&quot;
to run in separate threads, as controlled by threadCount.</p></div>
        <ul>
          <li><b>Type</b>: <tt>org.eclipse.tycho.surefire.ParallelMode</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${parallel}</tt></li>
        </ul><hr /><p><b><a name="perCoreThreadCount">perCoreThreadCount</a>:</b></p>
        <div><p>(JUnit 4.7 provider) Indicates that threadCount is per cpu
core.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${perCoreThreadCount}</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="pluginArtifacts">pluginArtifacts</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.util.List</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${plugin.artifacts}</tt></li>
        </ul><hr /><p><b><a name="product">product</a>:</b></p>
        <div><p>Eclipse product to be run, i.e. -product parameter passed to
test Eclipse runtime.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="providerHint">providerHint</a>:</b></p>
        <div><p>Normally tycho will automatically determine the test framework
provider based on the test project's classpath. Use this to force
using a test framework provider implementation with the given role
hint. Tycho comes with providers &quot;junit3&quot;,&quot;junit4&quot;,&quot;junit47&quot;. Note
that when specifying a providerHint, you have to make sure the
provider is actually available in the dependencies of
tycho-surefire-plugin.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="providerProperties">providerProperties</a>:</b></p>
        <div><p>Use this to specify surefire provider-specific properties.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.Properties</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="redirectTestOutputToFile">redirectTestOutputToFile</a>:</b></p>
        <div><p>Set this to &quot;true&quot; to redirect the unit test standard output to
a file (found in reportsDirectory/testName-output.txt).</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.redirectTestOutputToFile}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="reportsDirectory">reportsDirectory</a>:</b></p>
        <div><p>Base directory where all reports are written to.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.directory}/surefire-reports</tt></li>
        </ul><hr /><p><b><a name="showEclipseLog">showEclipseLog</a>:</b></p>
        <div><p>Enables -debug -consolelog for the test OSGi runtime</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${tycho.showEclipseLog}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skip">skip</a>:</b></p>
        <div><p>Same as <tt>skipTests</tt></p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.skip}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skipExec">skipExec</a>:</b></p>
        <div><b>Deprecated.</b> Use skipTests instead.</div>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.skipExec}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="skipTests">skipTests</a>:</b></p>
        <div><p>Set this to &quot;true&quot; to skip running tests, but still compile
them. Its use is NOT RECOMMENDED, but quite convenient on
occasion.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${skipTests}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="surefireProperties">surefireProperties</a>:</b></p>
        <div>(no description)</div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.directory}/surefire.properties</tt></li>
        </ul><hr /><p><b><a name="systemProperties">systemProperties</a>:</b></p>
        <div><p>Additional system properties to set for the forked test JVM.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.util.Map</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
        </ul><hr /><p><b><a name="test">test</a>:</b></p>
        <div><p>Specify this parameter if you want to use the test pattern
matching notation, Ant pattern matching, to select tests to run.
The Ant pattern will be used to create an include pattern formatted
like <tt>**/${test}.java</tt> When used, the
<tt>includes</tt> and <tt>excludes</tt> patterns parameters
are ignored</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${test}</tt></li>
        </ul><hr /><p><b><a name="testClass">testClass</a>:</b></p>
        <div><p>See testSuite</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${testClass}</tt></li>
        </ul><hr /><p><b><a name="testClassesDirectory">testClassesDirectory</a>:</b></p>
        <div><p>The directory containing generated test classes of the project
being tested.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${project.build.outputDirectory}</tt></li>
        </ul><hr /><p><b><a name="testFailureIgnore">testFailureIgnore</a>:</b></p>
        <div><p>Set this to true to ignore a failure during testing. Its use is
NOT RECOMMENDED, but quite convenient on occasion.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${maven.test.failure.ignore}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="testSuite">testSuite</a>:</b></p>
        <div><p>Bundle-SymbolicName of the test suite, a special bundle that
knows how to locate and execute all relevant tests.</p>
<p>testSuite and testClass identify single test class to run. All
other tests will be ignored if both testSuite and testClass are
provided. It is an error if provide one of the two parameters but
not the other.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.lang.String</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${testSuite}</tt></li>
        </ul><hr /><p><b><a name="threadCount">threadCount</a>:</b></p>
        <div><p>(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.</p></div>
        <ul>
          <li><b>Type</b>: <tt>int</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${threadCount}</tt></li>
        </ul><hr /><p><b><a name="useUIHarness">useUIHarness</a>:</b></p>
        <div><p>Run tests using UI (true) or headless (false) test harness.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="useUIThread">useUIThread</a>:</b></p>
        <div><p>Run tests in UI (true) or background (false) thread. Only
applies to UI test harness.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /><p><b><a name="useUnlimitedThreads">useUnlimitedThreads</a>:</b></p>
        <div><p>(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.</p></div>
        <ul>
          <li><b>Type</b>: <tt>boolean</tt></li>
          <li><b>Since</b>: <tt>0.16.0</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Expression</b>: <tt>${useUnlimitedThreads}</tt></li>
          <li><b>Default</b>: <tt>false</tt></li>
        </ul><hr /><p><b><a name="work">work</a>:</b></p>
        <div><p>Root directory (<a class="externalLink" href="http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/misc/runtime-options.html#osgiinstallarea">osgi.install.area</a>)
of the Equinox runtime used to execute tests.</p></div>
        <ul>
          <li><b>Type</b>: <tt>java.io.File</tt></li>
          <li><b>Required</b>: <tt>No</tt></li>
          <li><b>Default</b>: <tt>${project.build.directory}/work</tt></li>
        </ul>
      </div>
    </div>
  

                  </div>
            </div>
          </div>

    <hr/>

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

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