2

I am trying to test my appliation with arquillian framework. So I configirued pom and arquillian.xml to run my test case in wildfly remote container.Even i given remote address in arquillian.xml, the test case is running in local wildfly server. I have configured server profiles and running tests with remote-wildfly server profile.

test class

@RunWith(Arquillian.class)
public class BasicTest {

@Deployment
public static JavaArchive createDeployment() {
    return ShrinkWrap.create(JavaArchive.class).addClass(Greeter.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}

@Inject
private Greeter greeter;

@Test
public void shouldBeAbleTo() {
    assertEquals("Hello, aliens!", greeter.createGreeting("aliens"));
}

}

pom.xml

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0     http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.aerogear</groupId>
<artifactId>arquillian-wildfly-example</artifactId>
<packaging>jar</packaging>
<version>0.0.1</version>


<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <version.org.jboss.arquillian>1.1.5.Final</version.org.jboss.arquillian>
    <version.org.wildfly>8.1.0.Final</version.org.wildfly>
    <version.junit>4.11</version.junit>
</properties>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.17</version>
            </plugin>
            <!--This plugin's configuration is used to store Eclipse m2e settings 
                only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.apache.maven.plugins
                                    </groupId>
                                    <artifactId>
                                        maven-dependency-plugin
                                    </artifactId>
                                    <versionRange>
                                        [2.1,)
                                    </versionRange>
                                    <goals>
                                        <goal>unpack</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<dependencyManagement>
    <dependencies>

        <!-- Arquillian BOM (Bill Of Materials). -->
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>${version.org.jboss.arquillian}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>

        <!-- JUnit regression testing framework. -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${version.junit}</version>
        </dependency>

    </dependencies>
</dependencyManagement>

<profiles>

    <!-- Arquillian WildFly remote profile -->
    <profile>
        <id>arq-widlfly-remote</id>
        <dependencies>
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-arquillian-container-remote</artifactId>
                <version>8.2.0.Final</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>


<dependencies>

    <!-- JUnit regression testing framework. -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>

    <!-- JUnit Container Implementation for the Arquillian Project -->
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.protocol</groupId>
        <artifactId>arquillian-protocol-servlet</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

arquillian.xml

<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">

<!-- Sets the protocol which is how Arquillian talks and executes the tests inside the container -->
<defaultProtocol type="Servlet 3.0" />

<!-- Configuration to be used when the WidlFly remote profile is active -->
<container qualifier="widlfly-remote">
    <configuration>
        <property name="managementAddress">xxxxx</property>
        <property name="managementPort">xxxx</property>
        <property name="username">xxxx</property>
        <property name="password">xxxx</property>
    </configuration>
</container>

But the test case is running on 127.0.0.1:9990 wildfly server, Not running on the remote wildfly server which I was specified in arquillian.xml. What configuration I have to do/change. please help me.

Sri
  • 75
  • 1
  • 2
  • 11

1 Answers1

6

You need to tell Arquillian which arquillian.xml container qualifier you want to run with, as you can define many in the same xml file. If you only have one element and only ever need one you can define the default=true attribute on it, in which case Arquillian will use that unless anything else is defined.

<container qualifier="widlfly-remote" default="true">
   ...
</container> 

Else you can define -Darquillian.launch=widlfly-remote as a system property in your Maven Surefire execution to set it dynamically.

Essentially in your current setup you're not telling Arquillian which qualifier to use which means it will run with what ever is the default values for the Container Adapter you have on classpath(which is why you are seeing 127.0.0.1 being used.).

Aslak Knutsen
  • 706
  • 3
  • 4
  • I have defined -Darquillian.launch=widlfly-remote as system property in maven surefire. Now I am getting error like java.lang.RuntimeException: Could not create a new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor see cause. at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:170) – Sri May 28 '15 at 11:02
  • You have the rest of that exception? – Aslak Knutsen May 29 '15 at 07:51
  • Try upgrading to Arquillian 1.1.8.Final. See if the exception has some more info. – Aslak Knutsen May 30 '15 at 08:45
  • Thanks for reply. I am not sucess with upgrading 1.1.8 version. I have tried to test the web site with seleniumhq(www.seleniumhq.org). Its working for me and easy. which is preferable arquillian-selenium or selenium for testing web interface? – Sri May 31 '15 at 10:02
  • Not sure why it would fail for you, your example pom and test case run fine here on WildFly 8.2.0.Final. Maybe try to unpack a new fresh WildFly instance.. – Aslak Knutsen Jun 04 '15 at 09:48