4 Replies Latest reply on Jun 4, 2013 9:14 AM by javacoryd

    How to test non maven based project

    menganisanjay

      Hi All,

           I'm trying to test a non maven based simple spring application. I have included all the arquillian, spring and jboss related jars in the classpath. When I ran the testcase, I got the following error - which says "DeployableContainer must be specified". In Maven based project the container info is provided in the POM.xml.

       

      Could anyone please tell me the procedure to run the testcases without maven and how to select the deploable containers in non-maven projects.

       

      java.lang.RuntimeException: Could not create new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor

                at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:160)

                at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:111)

                at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:97)

                at org.jboss.arquillian.test.spi.TestRunnerAdaptorBuilder.build(TestRunnerAdaptorBuilder.java:52)

                at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:93)

                at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

                at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

                at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

      Caused by: java.lang.reflect.InvocationTargetException

                at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

                at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

                at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

                at java.lang.reflect.Constructor.newInstance(Constructor.java:525)

                at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:156)

                ... 10 more

      Caused by: org.jboss.arquillian.container.impl.ContainerCreationException: Could not create Container jbossas-remote-7

                at org.jboss.arquillian.container.impl.LocalContainerRegistry.create(LocalContainerRegistry.java:85)

                at org.jboss.arquillian.container.impl.client.container.ContainerRegistryCreator.createRegistry(ContainerRegistryCreator.java:76)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

                at java.lang.reflect.Method.invoke(Method.java:601)

                at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

                at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)

                at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)

                at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)

                at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)

                at org.jboss.arquillian.core.impl.ManagerImpl.bindAndFire(ManagerImpl.java:236)

                at org.jboss.arquillian.core.impl.InstanceImpl.set(InstanceImpl.java:74)

                at org.jboss.arquillian.config.impl.extension.ConfigurationRegistrar.loadConfiguration(ConfigurationRegistrar.java:68)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

                at java.lang.reflect.Method.invoke(Method.java:601)

                at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)

                at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99)

                at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81)

                at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:135)

                at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:115)

                at org.jboss.arquillian.core.impl.ManagerImpl.start(ManagerImpl.java:261)

                at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.<init>(EventTestRunnerAdaptor.java:56)

                ... 15 more

      Caused by: java.lang.IllegalArgumentException: DeployableContainer must be specified

                at org.jboss.arquillian.core.spi.Validate.notNull(Validate.java:44)

                at org.jboss.arquillian.container.impl.ContainerImpl.<init>(ContainerImpl.java:71)

                at org.jboss.arquillian.container.impl.LocalContainerRegistry.create(LocalContainerRegistry.java:76)

                ... 39 more

        • 1. Re: How to test non maven based project
          javacoryd

          I just got done completing this for thousands of JUnit tests which run in ANT.  It's all about the classpath and make sure you have an arquillian.xml file defined in your classpath.

           

          We use JBoss Seam for our application and luckily they upgraded the Seam 2.3 examples to using Arquillian ( rather than the Microcontainer ).  My hint would be to look at that project and the classpath that gets setup for running tests ( in the examples ) and it will work for you.

           

          Cory.

          • 2. Re: How to test non maven based project
            menganisanjay

            Could you please share the arquillian.xml. How to select a container. Is it possible from the arquillian.xml.

             

            Thanks in advance.

            Sanjay

            • 3. Re: How to test non maven based project
              menganisanjay

              Can anybody please help me.

              • 4. Re: How to test non maven based project
                javacoryd

                Here it is:

                 

                <?xml version="1.0" encoding="UTF-8"?>

                <arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

                    xmlns="http://jboss.org/schema/arquillian"

                    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

                   

                <defaultProtocol type="Servlet 3.0" />

                   

                    <container qualifier="jboss" default="true">

                        <protocol type="Servlet 3.0">

                            <property name="executionType">MANAGED</property>

                        </protocol>

                        <configuration>

                             

                            <property name="javaVmArguments">-Xms1g -Xmx1g -Xmn512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=128M -XX:MaxPermSize=512M</property>

                           

                            <!-- If you want to debug your tests comment out the line above and comment this one in.

                            <property name="javaVmArguments">-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xms1g -Xmx1g -Xmn512M -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:PermSize=128M -XX:MaxPermSize=512M </property>

                            -->

                            <property name="serverConfig">standalone-full.xml</property>

                        </configuration>

                    </container>

                 

                    <extension qualifier="suite">

                        <property name="deploymentClass">mypackage.test.Deployments</property>

                    </extension>

                </arquillian>