4 Replies Latest reply on Dec 8, 2010 7:45 PM by dkonecny

    [gf-emb] tests fail if run in batch but pass individually?

    dkonecny

      Hi,

       

      I'm new to Arquillian so sorry if I'm doing some obvious mistake. I tried all I could and I'm running out of options.

       

      I was able to follow http://blog.eisele.net/2010/11/arquillian-test-in-container-with.html and make arquillian-examples/ejb31-gfembedded run quite quickly without problems. I added some more EJBs into that project from one of your other examples - arquillian/examples/junit - for example TemperatureConverter EJB and its test. (Mainly because arquillian/examples/junit project gives me lots of troubles - so far jbossas 6 remote or embedded never passed.) Now, if I run either TemperatureConverterTestCase or HelloEJBTest they pass. If I execute test on project level then second test always fails with "Virtual server [server] already has a web module [test] loaded at  [/test]; therefore web module [test] cannot be loaded at this context  path on this virtual server". Do I have to do some cleanup or ... ?

       

      Thanks for your help.

      -David

       

      PS: snippets of my logs attached:

       

      -------------------------------------------------------
      T E S T S
      -------------------------------------------------------
      Running org.jboss.arquillian.examples.gfembedded.HelloEJBTest
      ...
      2/12/2010 2:42:22 PM com.sun.logging.LogDomains$1 log
      INFO: GlassFish Server Open Source Edition 3.1-b23 (java_re-private) startup time : Embedded(433ms) startup services(1490ms) total(1923ms)
      ...
      2/12/2010 2:42:24 PM org.jboss.arquillian.impl.DynamicServiceLoader verifySameImplementation
      WARNING: More then one reference to the same implementation was found for org.jboss.arquillian.spi.DeploymentPackager, please verify you classpath
      2/12/2010 2:42:24 PM org.jboss.arquillian.impl.DynamicServiceLoader verifySameImplementation
      WARNING: More then one reference to the same implementation was found for org.jboss.arquillian.spi.ApplicationArchiveGenerator, please verify you classpath
      2/12/2010 2:42:24 PM org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader findExtensionImpl
      WARNING: Multiple extension implementations found for org.jboss.shrinkwrap.api.spec.JavaArchive, please verify classpath or add a extensionOverride
      2/12/2010 2:42:24 PM org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader findExtensionImpl
      WARNING: Multiple extension implementations found for org.jboss.shrinkwrap.api.spec.WebArchive, please verify classpath or add a extensionOverride
      2/12/2010 2:42:24 PM org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader findExtensionImpl
      WARNING: Multiple extension implementations found for org.jboss.shrinkwrap.glassfish.api.ShrinkwrapReadableArchive, please verify classpath or add a extensionOverride
      2/12/2010 2:42:24 PM org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader findExtensionImpl
      WARNING: Multiple extension implementations found for org.jboss.shrinkwrap.api.exporter.ZipExporter, please verify classpath or add a extensionOverride
      2/12/2010 2:42:24 PM org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader findExtensionImpl
      WARNING: Multiple extension implementations found for org.jboss.shrinkwrap.spi.Configurable, please verify classpath or add a extensionOverride
      ...
      2/12/2010 2:42:30 PM com.sun.logging.LogDomains$1 log
      INFO: Portable JNDI names for EJB HelloEJB : [java:global/test/HelloEJB, java:global/test/HelloEJB!org.jboss.arquillian.examples.gfembedded.HelloEJB]
      ...
      2/12/2010 2:42:30 PM org.jboss.arquillian.testenricher.cdi.CDIInjectionEnricher injectClass
      INFO: BeanManager cannot be located at java:comp/BeanManager. Either you are using an archive with no beans.xml, or the BeanManager has not been bound to that location in JNDI.
      Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 10.186 sec

       

       

       

      Running org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase
      2/12/2010 2:42:30 PM org.jboss.arquillian.impl.DynamicServiceLoader verifySameImplementation
      WARNING: More then one reference to the same implementation was found for org.jboss.arquillian.spi.DeploymentPackager, please verify you classpath
      2/12/2010 2:42:30 PM org.jboss.arquillian.impl.DynamicServiceLoader verifySameImplementation
      WARNING: More then one reference to the same implementation was found for org.jboss.arquillian.spi.ApplicationArchiveGenerator, please verify you classpath
      classLoader = WebappClassLoader (delegate=true; repositories=WEB-INF/classes/)
      SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@77a477b7
      2/12/2010 2:42:35 PM com.sun.logging.LogDomains$1 log
      INFO: Portable JNDI names for EJB TemperatureConverterBean : [java:global/test/TemperatureConverterBean!com.acme.ejb.TemperatureConverter, java:global/test/TemperatureConverterBean]
      2/12/2010 2:42:35 PM com.sun.logging.LogDomains$1 log
      WARNING: java.lang.Exception: WEB0113: Virtual server [server] already has a web module [test] loaded at [/test]; therefore web module [test] cannot be loaded at this context path on this virtual server.
      java.lang.Exception: WEB0113: Virtual server [server] already has a web module [test] loaded at [/test]; therefore web module [test] cannot be loaded at this context path on this virtual server.
              at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1728)
              at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1609)
              at com.sun.enterprise.web.WebApplication.start(WebApplication.java:100)
              at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
              at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:240)
              at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:262)
              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:425)
              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:239)
              at org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:193)
              at org.jboss.arquillian.container.glassfish.embedded_3.GlassFishEmbeddedContainer.deploy(GlassFishEmbeddedContainer.java:164)
              at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:62)
              at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:50)
              at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
              at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
              at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:96)
              at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:162)
              at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186)
              at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
              at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
              at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
              at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
              at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
              at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
      2/12/2010 2:42:35 PM com.sun.logging.LogDomains$1 log
      SEVERE: Exception while invoking class com.sun.enterprise.web.WebApplication start method
      java.lang.Exception: java.lang.Exception: WEB0113: Virtual server [server] already has a web module [test] loaded at [/test]; therefore web module [test] cannot be loaded at this context path on this virtual server.
              at com.sun.enterprise.web.WebApplication.start(WebApplication.java:127)
              at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
              at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:240)
              at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:262)
              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:425)
              at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:239)
              at org.glassfish.kernel.embedded.EmbeddedDeployerImpl.deploy(EmbeddedDeployerImpl.java:193)
              at org.jboss.arquillian.container.glassfish.embedded_3.GlassFishEmbeddedContainer.deploy(GlassFishEmbeddedContainer.java:164)
              at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:62)
              at org.jboss.arquillian.impl.handler.ContainerDeployer.callback(ContainerDeployer.java:50)
              at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
              at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
              at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeClass(EventTestRunnerAdaptor.java:96)
              at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:162)
              at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186)
              at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
              at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
              at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
              at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
              at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
              at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
      2/12/2010 2:42:35 PM com.sun.logging.LogDomains$1 log
      SEVERE: Exception while loading the app
      classLoader = WebappClassLoader (delegate=true; repositories=WEB-INF/classes/)
      SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@77a477b7
      2/12/2010 2:42:35 PM com.sun.logging.LogDomains$1 log
      SEVERE: Application test not registered
      Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 4.859 sec <<< FAILURE!

       

      Results :

       

      Tests in error:
        testConvertToCelsius(org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase)
        testConvertToFarenheit(org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase)
        testIsTransactional(org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase)

       

      Tests run: 4, Failures: 0, Errors: 3, Skipped: 0

       

      ------------------------------------------------------------------------
      BUILD FAILURE
      ------------------------------------------------------------------------

       

      and log from test failure is consequently that servlet cannot be accessed:

       

      -------------------------------------------------------------------------------
      Test set: org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase
      -------------------------------------------------------------------------------
      Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 4.859 sec <<< FAILURE!
      testConvertToCelsius(org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase)  Time elapsed: 0.021 sec  <<< ERROR!
      org.jboss.arquillian.impl.event.FiredEventException: java.lang.IllegalStateException: Error launching test org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase public void org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase.testConvertToCelsius()
              at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:68)
              at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
              at org.jboss.arquillian.impl.EventTestRunnerAdaptor.test(EventTestRunnerAdaptor.java:157)
              at org.jboss.arquillian.junit.Arquillian$6.evaluate(Arquillian.java:244)
              at org.jboss.arquillian.junit.Arquillian$4.evaluate(Arquillian.java:207)
              at org.jboss.arquillian.junit.Arquillian$5$1.evaluate(Arquillian.java:225)
              at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
              at org.jboss.arquillian.junit.Arquillian$5.evaluate(Arquillian.java:221)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
              at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
              at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
              at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
              at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
              at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
              at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
              at org.jboss.arquillian.junit.Arquillian$2.evaluate(Arquillian.java:163)
              at org.jboss.arquillian.junit.Arquillian$3$1.evaluate(Arquillian.java:186)
              at org.jboss.arquillian.junit.Arquillian$MultiStatementExecutor.execute(Arquillian.java:297)
              at org.jboss.arquillian.junit.Arquillian$3.evaluate(Arquillian.java:182)
              at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
              at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:127)
              at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
              at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
              at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
              at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
      Caused by: java.lang.IllegalStateException: Error launching test org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase public void org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase.testConvertToCelsius()
              at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.invoke(ServletMethodExecutor.java:61)
              at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:50)
              at org.jboss.arquillian.impl.handler.ContainerTestExecuter.callback(ContainerTestExecuter.java:40)
              at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
              ... 30 more
      Caused by: java.lang.IllegalStateException: Error launching test at http://localhost:8181/test/ArquillianServletRunner?outputMode=serializedObject&className=org.jboss.arquillian.examples.gfembedded.TemperatureConverterTestCase&methodName=testConvertToCelsius. Got 403 (Access to the requested resource has been denied)
              at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.execute(ServletMethodExecutor.java:103)
              at org.jboss.arquillian.protocol.servlet_3.ServletMethodExecutor.invoke(ServletMethodExecutor.java:57)
              ... 33 more

        • 1. Re: [gf-emb] tests fail if run in batch but pass individually?
          aslak

          Sounds like this GlassFish bug:  http://java.net/jira/browse/GLASSFISH-13017

          • 2. Re: [gf-emb] tests fail if run in batch but pass individually?
            dkonecny

            Thanks Aslak. That does look like the cause. I will try to verify it with newer build of GF.

            -D

            • 3. Re: [gf-emb] tests fail if run in batch but pass individually?
              dkonecny

              OK, I can verify that GlassFish bug http://java.net/jira/browse/GLASSFISH-13017 has been fixed since GF build 3.1-b28. That's a good news. Not that  good news is that now I'm getting another exception (tried several  builds up to b32):

               

              Running org.jboss.arquillian.examples.gfembedded.HelloEJBTest
              9/12/2010 11:40:59 AM com.sun.enterprise.v3.server.DomainXmlPersistence getPidFile
              SEVERE: Cannot obtain lockfile location  /home/dev/arquillian-examples/ejb31-gfembedded/target/glassfish_9a05ea3e-3187-42cf-8ad5-a5936a3fdc7e/config/lockfile,  configuration changes will not be persisted
              java.io.IOException: No such file or directory
                       at java.io.UnixFileSystem.createFileExclusively(Native Method)
                       at java.io.File.createNewFile(File.java:883)
                       at com.sun.enterprise.v3.server.DomainXmlPersistence.getPidFile(DomainXmlPersistence.java:92)
                       at com.sun.enterprise.v3.server.DomainXmlPersistence.accessRead(DomainXmlPersistence.java:114)
                       at org.glassfish.config.support.DomainXml.parseDomainXml(DomainXml.java:210)
                       at org.glassfish.config.support.DomainXml.run(DomainXml.java:110)
                       at  com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.populateConfig(AbstractModulesRegistryImpl.java:173)
                       at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createHabitat(AbstractModulesRegistryImpl.java:155)
                       at com.sun.enterprise.module.bootstrap.Main.createHabitat(Main.java:430)
                       at com.sun.enterprise.glassfish.bootstrap.StaticGlassFishRuntime.newGlassFish(StaticGlassFishRuntime.java:104)
                       at org.glassfish.api.embedded.Server.<init>(Server.java:271)
                       at org.glassfish.api.embedded.Server.<init>(Server.java:66)
                       at org.glassfish.api.embedded.Server$Builder.build(Server.java:176)
                       at org.glassfish.api.embedded.Server$Builder.build(Server.java:158)
                       at  org.jboss.arquillian.container.glassfish.embedded_3.GlassFishEmbeddedContainer.setup(GlassFishEmbeddedContainer.java:95)
                       at org.jboss.arquillian.impl.handler.ContainerCreator.callback(ContainerCreator.java:56)
                       at org.jboss.arquillian.impl.handler.ContainerCreator.callback(ContainerCreator.java:46)
                       at org.jboss.arquillian.impl.event.MapEventManager.fire(MapEventManager.java:63)
                       at org.jboss.arquillian.impl.context.AbstractEventContext.fire(AbstractEventContext.java:115)
                       at org.jboss.arquillian.impl.EventTestRunnerAdaptor.beforeSuite(EventTestRunnerAdaptor.java:68)
                       at org.jboss.arquillian.junit.Arquillian.<init>(Arquillian.java:89)
                       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
                       at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
                       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
                       at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
                       at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31)
                       at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24)
                       at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
                       at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
                       at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
                       at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
                       at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:51)
                       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:115)
                       at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:102)
                       at org.apache.maven.surefire.Surefire.run(Surefire.java:180)
                       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                       at java.lang.reflect.Method.invoke(Method.java:597)
                       at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:350)
                       at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)

               

              Hard to say whether it is fault on Arquillian side by  not initializing embeddable GF properly or whether it is an issue on GF  side. But I can confirm that directory in question does not exist.

               

              Any ideas?

               

              Thanks,

              -David

              • 4. Re: [gf-emb] tests fail if run in batch but pass individually?
                dkonecny

                Running GlassFish 3.0.1 seems to be the way to go. Both arquillian-examples and arquillian/examples/junit pass. What version (and type) of JBoss server would you recommend me to use?

                 

                On one hand I accept that running GlassFish 3.1 Beta and Arquillian Alpha I should not be surprised if something fails, but I wonder what other people's experience is. My one has been frustratingly painful. I work on NetBeans project and I was hoping that EE6 Embeddable Container API would make testing of EJBs simpler. And in theory it does but in practice it depends on implementation of EJB container. And it took a while for GF 3.0 to get into a stable state. And GF 3.1 seems to be following the same path.

                 

                I was hoping that using Arquillian instead of Embeddable Container API would make situation easier. Perhaps users would have to learn yet another API but that should be outweight with benefits in terms of support for multiple servers, multiple containers, and most importantly simplified testing. And I still hope that's the case but so far my experience was too familiar - tests rarely pass; too many server exceptions; close to no idea what's wrong and how to fix it.

                 

                What is other peoples experience from using Arquillian? What servers (and versions) do you run on? How close/far do you think is Arquillian from release 1.0?

                 

                I hope I'm not off-topic-ing too much. Thanks,

                -David