Migration to Arquillian 1.0.0.CR1

Version 26

    This page documents the changes between Arquillian 1.0.0.Alpha5 and 1.0.0.CR1 (the interim releases were too rapid to worry about). If you are migrating from an earlier version of Arquillian (< 1.0.0.Alpha5) please refer to the 1.0.0.Alpha5 migration document as well.

     

    Artifact name changes

     

    The unit test framework adapters where moved under a groupId qualified by the framework name and the -container suffix was appended to the artifactId.

     

    Update the coordinates as follows (notation groupId:artifactId):

     

    • org.jboss.arquillian:arquillian-junit →
      org.jboss.arquillian.junit:arquillian-junit-container

    • org.jboss.arquillian:arquillian-testng →
      org.jboss.arquillian.testng:arquillian-testng-container & org.jboss.shrinkwrap:shrinkwrap-impl-base (ARQ-488)

    The container adapters for JBoss AS 7 have been moved underneath the JBoss AS project. Thus, the pattern for the artifact names is different than many of the other Arquillian container adapters:

     

    • JBoss AS 7 remote - org.jboss.as:jboss-as-arquillian-container-remote
    • JBoss AS 7 managed - org.jboss.as.jboss-as-arquillian-container-managed

     

    Package migrations

     

    The package of @Deployment and related annotations have changed as follows:

     

    • org.jboss.arquillian.api.Deployment →
      org.jboss.arquillian.container.test.api.Deployment

    • org.jboss.arquillian.api.ShouldThrowException →
      org.jboss.arquillian.container.test.api.ShouldThrowException

    • org.jboss.arquillian.api.RunAsClient →
      org.jboss.arquillian.container.test.api.RunAsClient

    • org.jboss.arquillian.api.TargetsContainer →
      org.jboss.arquillian.container.test.api.TargetsContainer

    • org.jboss.arquillian.api.OperateOnDeployment →
      org.jboss.arquillian.container.test.api.OperateOnDeployment

     

    The @ArquillianResource annotation has moved to a different package as well:

     

    • org.jboss.arquillian.api.ArquillianResource →
      org.jboss.arquillian.test.api.ArquillianResource

     

    Note that the @ArquillianResource is not capable of injecting the deployment URL when using the JBoss AS 7 container adapter because the adapter is not populating the ProtocolMetadata object as described in AS7-1152.

     

    The package of @Drone and related annotations have changed as follows:

     

    • org.jboss.arquillian.drone.annotation.Drone →
      org.jboss.arquillian.drone.api.annotation.Drone

     

    Protocol configuration

     

    The remote JBoss AS 7 container adapter requires the following Arquillian configuration (arquillian.xml) to function:

     

    <arquillian xmlns="http://jboss.org/schema/arquillian"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
    
        <container qualifier="jbossas-remote-7" default="true">
            <protocol type="jmx-as7">
                <property name="executionType">REMOTE</property>
            </protocol>
        </container>
    
    </arquillian>
    

     

    See the Migration to Arquillian 1.0.0.Alpha5 for more information about how container configuration works.

     

    Client mode

     

    If you've previously used the @RunAsClient annotation for client-side testing, then you'll likely want to set the testable attribute on @Deployment to false to prevent Arquillian from modifying the archive.

     

    @RunWith(Arquillian.class)
    @RunAsClient
    public class MyClientTest {
        @Deployment(testable = false)
        public WebArchive createDeployment() {
           return ShrinkWrap.create(WebArchive.class)....
       }
    }
    

     

    If, on the other hand, you want to test both in-container and as a client in the same test case, then you'll want to leave the testable attribute as its default value of true.

     

    Drone refactoring

     

    The Drone artifact has been seperated into API and implementation artifacts. You'll need to adjust the artifactId according to which drone provider you are using (Selenium, WebDriver, etc) as well as the implementation:

     

    • org.jboss.arquillian.extension:arquillian-drone →
      org.jboss.arquillian.extension:arquillian-drone-impl & org.jboss.arquillian.extension:arquillian-drone-selenium
      OR
      org.jboss.arquillian.extension:arquillian-drone-impl & org.jboss.arquillian.extension:arquillian-drone-webdriver

     

    The API artifacts will be pulled in automatically.If you are using Selenium, and want to use the Selenium Server, then you need this additional artifact:

     

    • org.jboss.arquillian.extension:arquillian-drone-selenium-server

     

    Including the Selenium Server extension artifact on the test classpath will cause the Selenium Server to be launched automatically. To control this behavior, you can use the Arquillian configuration.

     

    You are still free to choose Selenium and Webdriver version by your own and you'll have to include them to the test scope of your project. If you want to ensure you're using the same Selenium/Webdriver version Drone was tested with, you can include org.jboss.arquillian.extension:arquillian-drone-bom:pom in your <dependencyManagement> section.

     

    Ajocado

     

    http://community.jboss.org/wiki/ArquillianAjocado

     

    Ajocado was refactored and custom JUnit and TestNG runners was replaced with Arquillian runners

    and for configuration is used Drone extension.

     

    To use Ajocado (type-safe, Ajax Selenium), you only need one artifact (of type pom):

     

    • org.jboss.arquillian.ajocado:arquillian-ajocado-junit:pom or
    • org.jboss.arquillian.ajocado:arquililan-ajocado-testng:pom

     

    The arquillian-ajocado-junit and arquillian-ajocado-testng poms represents whole test stack, including arquillian-junit-container or arquillian-testng-container and arquillian-drone-selenium-server, so they should be the only artifact you need to import, such as:

     

    <dependency>
        <groupId>org.jboss.arquillian.ajocado</groupId>
        <artifactId>arquillian-ajocado-junit</artifactId>
        <version>1.0.0.CR1</version>
        <type>pom</type>
        <scope>test</scope>
    </dependency>
    

     

    Note that some of the Ajocado API packages have changed, most importantly you will now get all the required helpers (request guards, waiting conditions and locator factories) by importing:

     

    import static org.jboss.arquillian.ajocado.Ajocado.*;