Arquillian test hangs (in both maven command line and eclipse)
garzmike Apr 4, 2013 12:05 PMGood 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"); } }