<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">
<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>
                                <td>
                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
JBoss Modules Surefire Plugin
</h3>
<span style="margin-bottom: 10px;">
modified by <a href="http://community.jboss.org/people/kabirkhan">Kabir Khan</a> in <i>JBoss AS7 Development</i> - <a href="http://community.jboss.org/docs/DOC-16240">View the full document</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">
<div class="jive-rendered-content"><p><span>This is a fork of org.apache.maven.plugins:maven-surefire-plugin:2.6:test which allows you to run tests using modular classloading provided by jboss-modules.  The source for this plugin is available in github (</span><a class="jive-link-external-small" href="https://github.com/kabir/jboss-modules-surefire-plugin" target="_blank">https://github.com/kabir/jboss-modules-surefire-plugin</a><span>). </span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span>It works by suppying it with a prebuilt modules root (such as the one from a built JBoss AS 7) and a module definition file to define more modules for your test. The plugin will then create an additional modules directory from the module definition file, and then invoke o<span style="font-family: 'courier new', courier;">rg.jboss.modules.Main</span> using the configured modules directories. Since everything is now run via jboss modules, you should not execute tests directly from your IDE, but rather run them via maven. If you want to debug the tests, do a </span></p><p><span style="font-family: 'courier new', courier;">mvn install -Dmaven.surefire.debug=true</span></p><p><span> and attach a debugger to port 5005.</span></p><h4>Configuration</h4><div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It has the configuration options of the 'real' surefire plugin (<a class="jive-link-external-small" href="http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html" target="_blank">http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html</a>), although your mileage may vary if you start playing with the fork modes. The plugin takes a module definition file and creates a directory structure containing modules in the jboss-modules format</div><div> </div><p>It has the configuration options of the <a class="jive-link-external-small" href="http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html">original surefire plugin</a>, although your mileage may vary if you start playing with the fork modes. The plugin takes a module definition file and creates a directory structure containing modules in the jboss-modules format.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>For the forked module there are some more options for configuring the modules:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong style="font-weight: bold;">roots:</strong></p><p>Points to a list of exisiting module root directories, such as jboss-as7/modules</p><ul><li><strong style="font-weight: bold;">Type:</strong> java.io.File[]</li><li><strong style="font-weight: bold;">Required:</strong> No</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><div><div><strong style="font-weight: bold;">cleanModulesDirectory:</strong></div><div>If true (default) clean out the modules directory created by the plugin each time we run the tests.</div><div><ul><li><strong style="font-weight: bold;">Type:</strong> boolean</li><li><strong style="font-weight: bold;">Required: </strong>No</li><li><strong style="font-weight: bold;">Expression:</strong> ${jboss.modules.clean}</li><li><strong style="font-weight: bold;">Default:</strong> true</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong style="font-weight: bold;">modulesDirectory:</strong></p><p>The absolute path of the modules output directory created from <em style="font-style: italic;"><strong style="font-weight: bold;">moduleDefinitionFile</strong></em></p><ul><li><strong style="font-weight: bold;">Type:</strong> java.io.File</li><li><strong style="font-weight: bold;">Required:</strong> No</li><li><strong style="font-weight: bold;">Expression:</strong> ${jboss.modules.directory}</li><li><strong style="font-weight: bold;">Default:</strong> ${project.build.directory}/modules</li></ul><div> </div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong style="font-weight: bold;">logModule:</strong></p><p>The name of the -logmodule parameter passed in to JBoss Modules (i.e. the name of the module containg the jboss logmanager). This is needed if the target project uses java.util.Logging or jboss logging, and the jboss log manager is not on the system classpath.</p><ul><li><strong style="font-weight: bold;">Type:</strong> java.lang.String</li><li><strong style="font-weight: bold;">Required:</strong> No</li><li><strong style="font-weight: bold;">Expression:</strong> ${jboss.modules.logmodule}</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong style="font-weight: bold;">logConfiguration:</strong></p><p>The JBoss logging configuration if any. This must be set if the target project uses jboss logging and you want any output to be displayed</p><ul><li><strong style="font-weight: bold;">Type:</strong> java.io.File</li><li><strong style="font-weight: bold;">Required:</strong> No</li><li><strong style="font-weight: bold;">Expression:</strong> ${logging.configuration}</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><strong style="font-weight: bold;">moduleDefinitionFile:</strong></p><p>The path of the module definition file.</p><ul><li>Type java.io.File</li><li>Required: Yes</li><li>Expression: ${jboss.modules.definition}</li><li>Default: ${project.build.testOutputDirectory}/modules/module-def.xml</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>In addition, when using jboss logging you will need to set the following system properties in your pom when using this plugin (full example later):</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;"><systemProperties><br/></span></p><p><span style="font-family: 'courier new', courier;">    <property></span></p><p><span style="font-family: 'courier new', courier;">      <name>java.util.logging.manager</name></span></p><p><span style="font-family: 'courier new', courier;">      <value>org.jboss.logmanager.LogManager</value></span></p><p><span style="font-family: 'courier new', courier;">    </property></span></p><p><span style="font-family: 'courier new', courier;">    <property></span></p><p><span style="font-family: 'courier new', courier;">      <name>jboss.home.dir</name></span></p><p><span style="font-family: 'courier new', courier;">      <value>${jboss.home}</value></span></p><p><span style="font-family: 'courier new', courier;">    </property></span></p><p><span style="font-family: 'courier new', courier;">    <property></span></p><p><span style="font-family: 'courier new', courier;">      <name>org.jboss.boot.log.file</name></span></p><p><span style="font-family: 'courier new', courier;">      <value>${jboss.home}/standalone/log/boot.log</value></span></p><p><span style="font-family: 'courier new', courier;">    </property></span></p><p><span style="font-family: 'courier new', courier;"></systemProperties></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><div> </div><div><strong style="font-weight: bold;"><h4 style="color: #333333; font-weight: bold; padding-top: 10px; padding-right: 0pt; padding-bottom: 4px; padding-left: 0pt; font-size: 13pt; margin: 0pt;">Module Definition File</h4></strong></div><div>This sets up the modules used for running your tests, which are then copied to <strong style="font-weight: bold;"><em style="font-style: italic;">modulesDirectory</em></strong> from the plugin settings. The plugin automatically sets up a module called <em style="font-style: italic;">jboss.surefire.module</em> for you which contains the plugin classes. This module is then used as the module passed in to <span style="font-family: 'courier new', courier;">org.jboss.modules.Main</span>. If you want to set up more modules you can define those in the <strong style="font-weight: bold;"><em style="font-style: italic;">moduleDefinitionFile</em></strong>. The schema is very simple, and rather than duplicating the work done by jboss-modules the validation of most of the stuff is delegated to jboss-modules when loading the modules. Here is an example:</div><div> </div><div><div><div><span style="font-family: 'courier new', courier;"><?xml version="1.0" encoding="UTF-8"?></span></div><div><span style="font-family: 'courier new', courier;"><modules xmlns="urn:jboss:surefire-module:1.0" targetNs="urn:jboss:module:1.0"></span></div><div><span style="font-family: 'courier new', courier;">     <test-module-resources></span><span style="font-family: 'courier new', courier;">         <br/></span></div><div><span style="font-family: 'courier new', courier;">        <resource-root path="$junit:junit$"/></span></div><div><span style="font-family: 'courier new', courier;">        <resource-root path="$$CLASSES$$"/></span></div><div><span style="font-family: 'courier new', courier;">        <resource-root path="$$TEST.CLASSES$$"/></span></div><div><span style="font-family: 'courier new', courier;">     </test-module-resources></span></div><div><span style="font-family: 'courier new', courier;">   </test-module-dependencies></span></div><div><span style="font-family: 'courier new', courier;">        <module name="org.jboss.as.standalone"/></span></div><div><span style="font-family: 'courier new', courier;">        <module name="org.jboss.modules"/></span></div><div><span style="font-family: 'courier new', courier;">        <module name="org.jboss.threads"/></span></div><div><span style="font-family: 'courier new', courier;">        <module name="my.test.module"/></span></div><div><span style="font-family: 'courier new', courier;">   </test-module-dependencies></span></div><div><span style="font-family: 'courier new', courier;">   <module name="my.test.module"></span></div><div><span style="font-family: 'courier new', courier;">        <resources></span></div><div><span style="font-family: 'courier new', courier;">            <resource-root path="$some.group:some-artifact$"/></span></div><div><span style="font-family: 'courier new', courier;">        </resources></span></div><div><span style="font-family: 'courier new', courier;">   </module></span></div><div><span style="font-family: 'courier new', courier;"></modules></span></div><div> </div><div> </div><div> </div></div><div> </div><div><em style="font-style: italic;">targetNs</em> is the schema of the targetted jboss-modules version.</div><div><em>test-module-resources</em> adds the listed resources directly into the resources section of the created <em style="font-style: italic;">jboss.surefire.module</em> module.</div><div> </div></div><div> </div><div> </div><div> </div><div><em style="font-style: italic;">test-module-dependencies</em> adds the listed dependencies directly into the dependencies section of the created <em style="font-style: italic;">jboss.surefire.module</em> module. In this case we follow the jboss-modules 1.0 schema. The resource root paths containing '$' get expanded as shown in this example of what the generated <em style="font-style: italic;">modulesDirectory</em>/jboss/surefire/module/main/module.xml looks like:</div><div> </div><div><div> </div><div> </div><div><span style="font-family: 'courier new', courier;"><?xml version="1.0" encoding="UTF-8"?></span></div><div><span style="font-family: 'courier new', courier;"><module name="jboss.surefire.module" xmlns="urn:jboss:module:1.0"></span></div><div><span style="font-family: 'courier new', courier;">  <main-class name="org.apache.maven.surefire.booter.SurefireBooter"/></span></div><div><span style="font-family: 'courier new', courier;">  <resources></span></div><div><span style="font-family: 'courier new', courier;">    <!-- These two always get included --><br/></span></div><div><span style="font-family: 'courier new', courier;">    <resource-root path="surefire-api-2.6.jar"/></span></div><div><span style="font-family: 'courier new', courier;">    <resource-root path="surefire-booter-1.0.0.Alpha1.jar"/></span></div><div><span style="font-family: 'courier new', courier;">     <!-- The maven dependency $junit.junit$ gets pulled from the maven repository using the version </span></div><div><span style="font-family: 'courier new', courier;">         from your project dependencies</span></div><div><span style="font-family: 'courier new', courier;">     --><br/></span></div><div><span style="font-family: 'courier new', courier;">    <resource-root path="junit-4.8.1.jar"/></span></div><div><span style="font-family: 'courier new', courier;">    <!-- $$CLASSES$$ uses the main classes directory from your project --><br/></span></div><div><span style="font-family: 'courier new', courier;"><div><span style="font-family: 'courier new', courier;">    <resource-root path="classes"/></span></div><div><span style="font-family: 'courier new', courier;">     <!-- $$TEST.CLASSES$$ uses the test classes directory from your project --><br/></span></div></span></div><div><span style="font-family: 'courier new', courier;">    <resource-root path="test-classes"/></span></div><div><span style="font-family: 'courier new', courier;">  </resources></span></div><div><span style="font-family: 'courier new', courier;">  <dependencies></span></div><div><span style="font-family: 'courier new', courier;">    <module name="org.jboss.as.standalone"/></span></div><div><span style="font-family: 'courier new', courier;">    <module name="org.jboss.modules"/></span></div><div><span style="font-family: 'courier new', courier;">    <module name="org.jboss.threads"/></span></div><div><span style="font-family: 'courier new', courier;">    <module name="org.jboss.threads"/></span></div><div><span style="font-family: 'courier new', courier;">  </dependencies></span></div><div><span style="font-family: 'courier new', courier;"></module></span></div><div> </div><div>and the generated <em style="font-style: italic;">modulesDirectory</em>/my/test/module/main/module.xml looks like</div><div><div><span style="font-family: 'courier new', courier;"><?xml version="1.0" encoding="UTF-8"?></span></div><div><span style="font-family: 'courier new', courier;"><module name="my.test.module" xmlns="urn:jboss:module:1.0"></span></div><div><span style="font-family: 'courier new', courier;">  <resources></span></div><div><span style="font-family: 'courier new', courier;">     <!-- This gets copied to modulesDirectory/my/test/module from the maven repository --><br/></span></div><div><span style="font-family: 'courier new', courier;">      <resource-root path="some-group-some-artifact-1.6.0.jar"/></span></div><div><span style="font-family: 'courier new', courier;">   </resources></span></div></div><div><span style="font-family: 'courier new', courier;"><div><span style="font-family: 'courier new', courier;"></module></span></div><div> </div></span></div></div><div> </div><div> </div><div> </div><div> </div><div> </div><div>You can have as many <em style="font-style: italic;">modules/module <span style="font-style: normal;">entries as you like</span><span style="font-style: normal;"> and they just get copied across. The </span>$some.group:some.artifact$ </em>value gets resolved from your project's dependencies into the path to that dependency in your local maven repository. In this case (assuming your pom has a dependency on some.group:some-artifact:1.3.0, which then gets copied from the local maven repository to the module directory) <em style="font-style: italic;">modulesDirectory</em>/my/test/module/main/module.xml looks like:</div><div> </div><div><div> </div><div> </div><div><span style="font-family: 'courier new', courier;"><?xml version="1.0" encoding="UTF-8"?></span></div><div><span style="font-family: 'courier new', courier;"><module name="my.test.module" xmlns="urn:jboss:module:1.0"></span></div><div><span style="font-family: 'courier new', courier;">  <resources></span></div><div><span style="font-family: 'courier new', courier;">    <resource-root path="some-artifact-1.3.0.jar'/></span></div><div><span style="font-family: 'courier new', courier;">  </resources></span></div><div><span style="font-family: 'courier new', courier;"></module></span></div></div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>To summarize, you have the following options to set the resource-root paths.</p><ul><li>Full path: Nothing special happens in this case, the module will simply point to that place</li><li>$$CLASSES$$: Copies the main classes directory from your project to the created module</li><li>$$TEST.CLASSES$$: Copies the test classes directory from your project to the created module</li><li>$maven.group.id<strong>:</strong>maven.artifact.id$: Resolves the maven dependency from your project dependencies and copies the jar to the created module</li></ul><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><h4>Consuming the plugin from a pom</h4><p>Normally you want to turn off the normal surefire plugin since that does not understand modular classloading</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;">  <build><br/></span></p><p><span style="font-family: 'courier new', courier;">    <plugins></span></p><p><span style="font-family: 'courier new', courier;">      <plugin></span></p><p><span style="font-family: 'courier new', courier;">        <groupId>org.apache.maven.plugins</groupId></span></p><p><span style="font-family: 'courier new', courier;">        <artifactId>maven-surefire-plugin</artifactId></span></p><p><span style="font-family: 'courier new', courier;">        <version>2.6</version></span></p><p><span style="font-family: 'courier new', courier;">        <!--  Disable the standard surefire plugin since that runs tests without modular classloading --></span></p><p><span style="font-family: 'courier new', courier;">        <configuration></span></p><p><span style="font-family: 'courier new', courier;">           <skipTests>true</skipTests></span></p><p><span style="font-family: 'courier new', courier;">        </configuration></span></p><p><span style="font-family: 'courier new', courier;">      </plugin></span></p><div> </div><div>Then enable and configure the jboss modules surefire plugin (${jboss.home} is configured elsewhere in the pom and points to a built JBoss AS 7 instance)</div><div><div><div><span style="font-family: 'courier new', courier;">            <plugin></span></div><div><span style="font-family: 'courier new', courier;">                <groupId>org.jboss.maven.surefire.modular</groupId></span></div><div><span style="font-family: 'courier new', courier;">                <artifactId>maven-surefire-plugin</artifactId></span></div><div><span style="font-family: 'courier new', courier;">                <version>1.0.0.Alpha1</version></span></div><div><span style="font-family: 'courier new', courier;">                <executions></span></div><div><span style="font-family: 'courier new', courier;">                    <execution></span></div><div><span style="white-space: pre; font-family: 'courier new', courier;"> </span><span style="font-family: 'courier new', courier;">                    <goals></span></div><div><span style="white-space: pre; font-family: 'courier new', courier;"> </span><span style="font-family: 'courier new', courier;">                        <goal>test</goal></span></div><div><span style="white-space: pre; font-family: 'courier new', courier;"> </span><span style="font-family: 'courier new', courier;">                    </goals></span></div><div><span style="font-family: 'courier new', courier;">                    </execution></span></div><div><span style="font-family: 'courier new', courier;">                </executions></span></div><div><span style="font-family: 'courier new', courier;">                <configuration></span></div><div><span style="font-family: 'courier new', courier;">                    <!--  standard surefire options --></span></div><div><span style="font-family: 'courier new', courier;">                    <redirectTestOutputToFile>true</redirectTestOutputToFile>                    </span></div><div><span style="font-family: 'courier new', courier;">                    <enableAssertions>true</enableAssertions></span></div><div><span style="font-family: 'courier new', courier;">                    <systemProperties></span></div><div><span style="font-family: 'courier new', courier;">                        <property></span></div><div><span style="font-family: 'courier new', courier;">                           <!-- We need to enable the log manager for jboss as --><br/></span></div><div><span style="font-family: 'courier new', courier;">                          <name>java.util.logging.manager</name></span></div><div><span style="font-family: 'courier new', courier;">                          <value>org.jboss.logmanager.LogManager</value></span></div><div><span style="font-family: 'courier new', courier;">                        </property></span></div><div><span style="font-family: 'courier new', courier;">                        <property></span></div><div><span style="font-family: 'courier new', courier;">                          <!-- The root of the jboss installation --><br/></span></div><div><span style="font-family: 'courier new', courier;">                          <name>jboss.home.dir</name></span></div><div><span style="font-family: 'courier new', courier;">                          <value>${jboss.home}</value></span></div><div><span style="font-family: 'courier new', courier;">                        </property></span></div><div><span style="font-family: 'courier new', courier;">                        <property></span></div><div><span style="font-family: 'courier new', courier;">                          <!-- Set the boot log location --><br/></span></div><div><span style="font-family: 'courier new', courier;">                          <name>org.jboss.boot.log.file</name></span></div><div><span style="font-family: 'courier new', courier;">                          <value>${jboss.home}/standalone/log/boot.log</value></span></div><div><span style="font-family: 'courier new', courier;">                        </property></span></div><div><span style="font-family: 'courier new', courier;"><div><div><span style="font-family: 'courier new', courier;">                        <!-- If using EmbeddedServerFactory to create the AS instance (used by the </span></div><div><span style="font-family: 'courier new', courier;">                             arquillian container) set a directory to copy across the </span></div><div><span style="font-family: 'courier new', courier;">                             ${jboss.home}/standalone directory to, to avoid pollution of standalone.xml</span></div><div><span style="font-family: 'courier new', courier;">                             between runs</span></div><div><span style="font-family: 'courier new', courier;"> </span>                         --></div>                        <property></div><div>                           <name>jboss.embedded.root</name></div><div>                           <value>target/temp-config</value></div><div>                        </property></div></span></div><div><span style="font-family: 'courier new', courier;">                    </systemProperties></span></div><div><span style="font-family: 'courier new', courier;">                    <includes></span></div><div><span style="font-family: 'courier new', courier;">                        <include>org/jboss/as/test/surefire/**/*TestCase.java</include></span></div><div><span style="font-family: 'courier new', courier;">                    </includes></span></div><div><span style="font-family: 'courier new', courier;">                    <!-- Extra forked plugin options --></span></div><div><span style="font-family: 'courier new', courier;">                    <logModule>org.jboss.logmanager</logModule></span></div><div><span style="font-family: 'courier new', courier;">                    <logConfiguration>${jboss.home}/standalone/configuration/logging.properties</logConfiguration></span></div><div><span style="font-family: 'courier new', courier;">                    <roots></span></div><div><span style="font-family: 'courier new', courier;">                        <root>${jboss.home}/modules</root></span></div><div><span style="font-family: 'courier new', courier;">                    </roots></span></div><div><span style="font-family: 'courier new', courier;">                </configuration></span></div><div><span style="font-family: 'courier new', courier;">            </plugin>      </span></div></div></div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><h4 style="color: #333333; font-weight: bold; padding-top: 10px; padding-right: 0pt; padding-bottom: 4px; padding-left: 0pt; font-size: 13pt; margin: 0pt;">Running Arquillian Tests</h4><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>The plugin can be used to run arquillian tests against an embedded AS 7 instance using modular classloading everywhere at runtime. </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>If running an Arquillian IN_CONTAINER test, Arquillian will first execute parts of the test on the client side to create the deployments, before starting an embedded AS instance and deploying the tests into the started server. The test is then run in the server as part of the deployment.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>If running an Arquillian AS_CLIENT test, Arquiilian will start the embedded AS instance and then run the test on the client to connect to the started AS instance.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p>Since the tests are now booted up using JBoss Modules, there is no runtime classpath to speak of, so you need to set up your modules to be able to see the arquillian classes and to be able to see the test class and the dependencies for what is executed on the client (the parts of the test run inside the server don't need anything special since that is handled for us by the server). Here is an example of a module definition file for running an Arquillian test:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;"><?xml version="1.0" encoding="UTF-8"?></span></p><p><span style="font-family: 'courier new', courier;"><modules xmlns="urn:jboss:surefire-module:1.0" targetNs="urn:jboss:module:1.0"></span></p><p><span style="font-family: 'courier new', courier;">    <test-module-resources></span></p><p><span style="font-family: 'courier new', courier;">        <resource-root path="$org.jboss.as:jboss-as-arquillian-container-embedded$"/></span></p><p><span style="font-family: 'courier new', courier;">        <resource-root path="$org.jboss.as:jboss-as-arquillian-container-common$"/></span></p><p><span style="font-family: 'courier new', courier;">        <resource-root path="$$TEST.CLASSES$$"/></span></p><p><span style="font-family: 'courier new', courier;">    </test-module-resources></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;">    <test-module-dependencies></span></p><p><span style="font-family: 'courier new', courier;">        <!-- Arquillian dependencies --></span></p><p><span style="font-family: 'courier new', courier;">        <module services="import" name="org.jboss.surefire.arquillian-deps"/></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;">        <!-- Add other test dependencies here --></span></p><p><span style="font-family: 'courier new', courier;">    </test-module-dependencies></span></p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;">    <!-- Add more test modules as needed --></span></p><p><span style="font-family: 'courier new', courier;"></modules></span></p><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><p><span style="font-family: 'courier new', courier;">org.jboss.surefire.arquillian-deps</span> is a module that ships with JBoss AS 7, and contains the dependencies needed for arquillian. It can be found <a class="jive-link-external-small" href="https://github.com/jbossas/jboss-as/blob/master/build/src/main/resources/modules/org/jboss/surefire/arquillian-deps/main/module.xml">here</a>. In addition, the test module in this example contains the project test classes directories, and it adds the resource roots containing the JBoss AS 7 embedded Arquillian container and the common Arquillian container classes. Including these container classes makes Arquillian start up the embedded AS 7 container.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;"> </p><h4>TBD</h4><ul><li>Investigate if surefire report works with this or if that needs forking too</li></ul></div></div><div> </div></div>
<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
<p style="margin: 0;">Comment by <a href="http://community.jboss.org/docs/DOC-16240">going to Community</a></p>
        <p style="margin: 0;">Create a new document in JBoss AS7 Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=102&containerType=14&container=2225">Community</a></p>
</div></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>