0 Replies Latest reply on Apr 4, 2013 12:05 PM by garzmike

    Arquillian test hangs (in both maven command line and eclipse)

    garzmike

      Good morning,

      I'm facing the follwing problem and despite I've seen some things related to older versions, I think it is not the case, since I'm using the most up to date.

      The challenge is to run a test using arquillian on Jboss AS 7.1.1.Final.

      However when I do run the test, it hangs without more informations.

      That happens both in the managed container and in the remote. I tried a number of things but none solved. Also I tried as well without the jboss password, but I left as this since I'm trying to test into a remote instance (but that is still on the same machine).

       

      I would like to thank you all beforehand the help with this issue.

       

      Following are my files:

       

      arquillian.xml:

       

      <?xml version="1.0" encoding="UTF-8"?>
      <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">
      
      
                <!-- Uncomment to have test archives exported to the file system for inspection -->
                <!-- <engine> -->
                <!-- <property name="deploymentExportPath">target/</property> -->
                <!-- </engine> -->
      
      
                <!-- Example configuration for a remote JBoss AS 7 instance -->
                <container qualifier="jboss" default="true">
                          <protocol type="jmx-as7">
                                    <property name="executionType">REMOTE</property>
                          </protocol>
                          <configuration>
                                     <property name="managementAddress">localhost</property> 
                                    <property name="managementPort">9999</property> 
                                    <property name="username">admin</property>
                                    <property name="password">admin</property> 
                          </configuration>
                </container>
      </arquillian>
      
      

       

      my pom.xml:

       

       

      <?xml version="1.0" encoding="UTF-8"?>
      <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>com.delagelanden</groupId>
                <artifactId>ri-jee6</artifactId>
                <version>1.0-SNAPSHOT</version>
                <packaging>war</packaging>
      
      
                <name>Java EE 6 webapp project</name>
                <description>A starter Java EE 6 webapp project for use on JBoss AS 7, generated from the jboss-javaee6-webapp archetype</description>
      
      
                <properties>
                          <!-- Explicitly declaring the source encoding eliminates the following 
                                    message: -->
                          <!-- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered 
                                    resources, i.e. build is platform dependent! -->
                          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                          <!-- Timestamp format for the maven.build.timestamp property -->
                          <!-- You can reference property in pom.xml or filtered resources (must 
                                    enable third-party plugin if using Maven < 2.1) -->
                          <maven.build.timestamp.format>yyyyMMdd'T'HHmmss</maven.build.timestamp.format>
                          <!-- Specify the JBoss AS directory to be the JBOSS_HOME environment variable -->
                          <jboss.home>${env.JBOSS_HOME}</jboss.home>
                </properties>
      
      
                <dependencyManagement>
                          <dependencies>
                                    <!-- Define the version of JBoss' Java EE 6 APIs we want to import. Any 
                                              dependencies from org.jboss.spec will have their version defined by this 
                                              BOM -->
                                    <!-- JBoss distributes a complete set of Java EE 6 APIs including a Bill 
                                              of Materials (BOM). A BOM specifies the versions of a "stack" (or a collection) 
                                              of artifacts. We use this here so that we always get the correct versions 
                                              of artifacts. Here we use the jboss-javaee-web-6.0 stack (you can read this 
                                              as the JBoss stack of the Java EE Web Profile 6 APIs), and we use version 
                                              2.0.0.Beta1 which is the latest release of the stack. You can actually use 
                                              this stack with any version of JBoss AS that implements Java EE 6, not just 
                                              JBoss AS 7! -->
                                    <dependency>
                                              <groupId>org.jboss.spec</groupId>
                                              <artifactId>jboss-javaee-web-6.0</artifactId>
                                              <version>3.0.2.Final</version>
                                              <type>pom</type>
                                              <scope>import</scope>
                                    </dependency>
                          </dependencies>
                </dependencyManagement>
      
      
                <dependencies>
      
      
                          <!-- First declare the APIs we depend on and need for compilation. All 
                                    of them are provided by JBoss AS 7 -->
      
      
                          <!-- Import the CDI API, we use provided scope as the API is included in 
                                    JBoss AS 7 -->
                          <dependency>
                                    <groupId>javax.enterprise</groupId>
                                    <artifactId>cdi-api</artifactId>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- Import the Common Annotations API (JSR-250), we use provided scope 
                                    as the API is included in JBoss AS 7 -->
                          <dependency>
                                    <groupId>org.jboss.spec.javax.annotation</groupId>
                                    <artifactId>jboss-annotations-api_1.1_spec</artifactId>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- Import the JAX-RS API, we use provided scope as the API is included 
                                    in JBoss AS 7 -->
                          <dependency>
                                    <groupId>org.jboss.spec.javax.ws.rs</groupId>
                                    <artifactId>jboss-jaxrs-api_1.1_spec</artifactId>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- Import the JPA API, we use provided scope as the API is included in 
                                    JBoss AS 7 -->
                          <dependency>
                                    <groupId>org.hibernate.javax.persistence</groupId>
                                    <artifactId>hibernate-jpa-2.0-api</artifactId>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- Import the EJB API, we use provided scope as the API is included in 
                                    JBoss AS 7 -->
                          <dependency>
                                    <groupId>org.jboss.spec.javax.ejb</groupId>
                                    <artifactId>jboss-ejb-api_3.1_spec</artifactId>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- JSR-303 (Bean Validation) Implementation -->
                          <!-- Provides portable constraints such as @Email -->
                          <!-- Hibernate Validator is shipped in JBoss AS 7 -->
                          <dependency>
                                    <groupId>org.hibernate</groupId>
                                    <artifactId>hibernate-validator</artifactId>
                                    <version>4.2.0.Final</version>
                                    <scope>provided</scope>
                                    <exclusions>
                                              <exclusion>
                                                        <groupId>org.slf4j</groupId>
                                                        <artifactId>slf4j-api</artifactId>
                                              </exclusion>
                                    </exclusions>
                          </dependency>
      
      
                          <!-- Now we declare any tools needed -->
      
      
                          <!-- Annotation processor to generate the JPA 2.0 metamodel classes for 
                                    typesafe criteria queries -->
                          <dependency>
                                    <groupId>org.hibernate</groupId>
                                    <artifactId>hibernate-jpamodelgen</artifactId>
                                    <version>1.1.1.Final</version>
                                    <scope>provided</scope>
                          </dependency>
      
      
                          <!-- Needed for running tests (you may also use TestNG) -->
                          <dependency>
                                    <groupId>junit</groupId>
                                    <artifactId>junit</artifactId>
                                    <version>4.10</version>
                                    <scope>test</scope>
                          </dependency>
      
      
                          <!-- Optional, but highly recommended -->
                          <!-- Arquillian allows you to test enterprise code such as EJBs and Transactional(JTA) 
                                    JPA from JUnit/TestNG -->
                          <dependency>
                                    <groupId>org.jboss.arquillian.junit</groupId>
                                    <artifactId>arquillian-junit-container</artifactId>
                                    <version>1.0.3.Final</version>
                                    <scope>test</scope>
                          </dependency>
      
      
                          <!-- Adding the JSF 2.1 dependency -->
                          <dependency>
                                    <groupId>javax.faces</groupId>
                                    <artifactId>jsf-api</artifactId>
                                    <version>2.1</version>
                          </dependency>
                </dependencies>
                <build>
                          <!-- Maven will append the version to the finalName (which is the name 
                                    given to the generated war, and hence the context root) -->
                          <finalName>${project.artifactId}</finalName>
                          <plugins>
                                    <!-- Compiler plugin enforces Java 1.6 compatibility and activates annotation 
                                              processors -->
                                    <plugin>
                                              <artifactId>maven-compiler-plugin</artifactId>
                                              <version>2.3.1</version>
                                              <configuration>
                                                        <source>1.6</source>
                                                        <target>1.6</target>
                                              </configuration>
                                    </plugin>
                                    <plugin>
                                              <artifactId>maven-war-plugin</artifactId>
                                              <version>2.1.1</version>
                                              <configuration>
                                                        <!-- Java EE 6 doesn't require web.xml, Maven needs to catch up! -->
                                                        <failOnMissingWebXml>false</failOnMissingWebXml>
                                              </configuration>
                                    </plugin>
                                    <!-- The JBoss AS plugin deploys your war to a local JBoss AS container -->
                                    <!-- To use, set the JBOSS_HOME environment variable and run: mvn package 
                                              jboss-as:deploy -->
                                    <plugin>
                                              <groupId>org.jboss.as.plugins</groupId>
                                              <artifactId>jboss-as-maven-plugin</artifactId>
                                              <version>7.4.Final</version>
                                    </plugin>
                          </plugins>
                </build>
      
      
                <profiles>
                          <profile>
                                    <!-- The default profile skips all tests, though you can tune it to run 
                                              just unit tests based on a custom pattern -->
                                    <!-- Seperate profiles are provided for running all tests, including Arquillian 
                                              tests that execute in the specified container -->
                                    <id>default</id>
                                    <activation>
                                              <activeByDefault>true</activeByDefault>
                                    </activation>
                                    <build>
                                              <plugins>
                                                        <plugin>
                                                                  <artifactId>maven-surefire-plugin</artifactId>
                                                                  <version>2.14</version>
                                                                  <configuration>
                                                                            <skip>false</skip>
                                                                  </configuration>
                                                        </plugin>
                                              </plugins>
                                    </build>
                          </profile>
      
      
                          <profile>
                                    <!-- We add the JBoss repository as we need the JBoss AS connectors for 
                                              Arquillian -->
                                    <repositories>
                                              <!-- The JBoss Community public repository is a composite repository 
                                                        of several major repositories -->
                                              <!-- see http://community.jboss.org/wiki/MavenGettingStarted-Users -->
                                              <repository>
                                                        <id>jboss-public-repository</id>
                                                        <name>JBoss Repository</name>
                                                        <url>http://repository.jboss.org/nexus/content/groups/public</url>
                                                        <!-- These optional flags are designed to speed up your builds by reducing 
                                                                  remote server calls -->
                                                        <releases>
                                                        </releases>
                                                        <snapshots>
                                                                  <enabled>false</enabled>
                                                        </snapshots>
                                              </repository>
                                    </repositories>
      
      
                                    <pluginRepositories>
                                              <pluginRepository>
                                                        <id>jboss-public-repository</id>
                                                        <name>JBoss Repository</name>
                                                        <url>http://repository.jboss.org/nexus/content/groups/public</url>
                                                        <releases>
                                                        </releases>
                                                        <snapshots>
                                                                  <enabled>false</enabled>
                                                        </snapshots>
                                              </pluginRepository>
                                    </pluginRepositories>
      
      
                                    <!-- An optional Arquillian testing profile that executes tests in your 
                                              JBoss AS instance -->
                                    <!-- This profile will start a new JBoss AS instance, and execute the 
                                              test, shutting it down when done -->
                                    <!-- Run with: mvn clean test -Parq-jbossas-managed -->
                                    <id>arq-jbossas-managed</id>
                                    <dependencies>
                                              <dependency>
                                                        <groupId>org.jboss.as</groupId>
                                                        <artifactId>jboss-as-arquillian-container-managed</artifactId>
                                                        <version>7.2.0.Final</version>
                                                        <scope>test</scope>
                                              </dependency>
                                    </dependencies>
                          </profile>
      
      
                          <profile>
                                    <!-- We add the JBoss repository as we need the JBoss AS connectors for 
                                              Arquillian -->
                                    <repositories>
                                              <!-- The JBoss Community public repository is a composite repository 
                                                        of several major repositories -->
                                              <!-- see http://community.jboss.org/wiki/MavenGettingStarted-Users -->
                                              <repository>
                                                        <id>jboss-public-repository</id>
                                                        <name>JBoss Repository</name>
                                                        <url>http://repository.jboss.org/nexus/content/groups/public</url>
                                                        <!-- These optional flags are designed to speed up your builds by reducing 
                                                                  remote server calls -->
                                                        <releases>
                                                        </releases>
                                                        <snapshots>
                                                                  <enabled>false</enabled>
                                                        </snapshots>
                                              </repository>
                                    </repositories>
      
      
                                    <pluginRepositories>
                                              <pluginRepository>
                                                        <id>jboss-public-repository</id>
                                                        <name>JBoss Repository</name>
                                                        <url>http://repository.jboss.org/nexus/content/groups/public</url>
                                                        <releases>
                                                        </releases>
                                                        <snapshots>
                                                                  <enabled>false</enabled>
                                                        </snapshots>
                                              </pluginRepository>
                                    </pluginRepositories>
      
      
                                    <!-- An optional Arquillian testing profile that executes tests in a remote 
                                              JBoss AS instance -->
                                    <!-- Run with: mvn clean test -Parq-jbossas-remote -->
                                    <id>arq-jbossas-remote</id>
                                    <dependencies>
                                              <dependency>
                                                        <groupId>org.jboss.as</groupId>
                                                        <artifactId>jboss-as-arquillian-container-remote</artifactId>
                                                        <version>7.2.0.Final</version>
                                                        <scope>test</scope>
                                              </dependency>
                                    </dependencies>
                          </profile>
      
      
                </profiles>
      </project>
      
      

       

      My test class:

       

       

      @RunWith(Arquillian.class)
      public class ProjectTest {
      
      
         @Deployment
         public static Archive<?> createTestArchive() {
            return ShrinkWrap.create(WebArchive.class, "test.war")
                  .addClasses(Project.class, ProjectVC.class,ProjectService.class, ProjectDAO.class, Resources.class)
                  .addAsResource("META-INF/persistence.xml", "META-INF/persistence.xml")
                  .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
         }
      
      
         @Inject
         ProjectVC projectView;
      
      
         @Inject
         Logger log;
      
      
         @Test
         public void testRegister() throws Exception {
                  projectView.create();
                  Project newProject = projectView.getEdit();
            
                  newProject.setCode("SA");
                  newProject.setName("Sample");
                  newProject.setDescription("Sample Description");
                  
                  projectView.setEdit(newProject);
                  projectView.save();
                  
                  assertNotNull(newProject.getId());
                  log.log(Level.ALL, "Passing through");
         }
         
      
      
      }