到目前为止,我使用Arquillian和嵌入式Glassfish 4.x进行了集成测试.当我遇到bug
@L_301_0@时,我尝试迁移到Wildfly 8.0.0.Beta1.
我在Maven的部落是:
- <dependency>
- <groupId>org.jboss.arquillian</groupId>
- <artifactId>arquillian-bom</artifactId>
- <version>1.1.2.Final</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.jboss.arquillian.junit</groupId>
- <artifactId>arquillian-junit-container</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.wildfly</groupId>
- <artifactId>wildfly-arquillian-container-embedded</artifactId>
- <version>8.0.0.Beta1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.wildfly</groupId>
- <artifactId>wildfly-embedded</artifactId>
- <version>8.0.0.Beta1</version>
- <scope>test</scope>
- </dependency>
运行测试时,我收到的错误是jbossHome为null.我没有arquillian.xml.当检查Github来源为wildfly-arquillian-container-embedded(POM)时,我想知道为什么嵌入式容器需要JBOSS_HOME?我理解为了管理和远程的变体,但为什么我需要一个嵌入式的?
Arquillian页面也只有JBoss AS作为受管服务器的例子,所以我想知道它是否可能(但是为什么会有wildfly-arquillian-container-embedded?)?
或者我应该使用maven-dependency-plugin来容纳托管容器来下载容器(参见http://arquillian.org/guides/getting_started/#add_more_containers – 底部)?
谢谢和最好的问候!
确切的错误是:
- org.jboss.arquillian.container.spi.ConfigurationException: jbossHome 'null' must exist
- at org.jboss.arquillian.container.spi.client.deployment.Validate.configurationDirectoryExists(Validate.java:139)
- at org.jboss.as.arquillian.container.embedded.EmbeddedContainerConfiguration.validate(EmbeddedContainerConfiguration.java:102)
- at org.jboss.arquillian.container.impl.ContainerImpl.createDeployableConfiguration(ContainerImpl.java:115)
- at org.jboss.arquillian.container.impl.ContainerImpl.setup(ContainerImpl.java:181)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$7.perform(ContainerLifecycleController.java:149)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$7.perform(ContainerLifecycleController.java:145)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forContainer(ContainerLifecycleController.java:255)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.setupContainer(ContainerLifecycleController.java:144)
- 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:606)
- 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.container.impl.client.ContainerDeploymentContextHandler.createContainerContext(ContainerDeploymentContextHandler.java:57)
- 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:606)
- at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:94)
- at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88)
- 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.EventImpl.fire(EventImpl.java:67)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:62)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$1.perform(ContainerLifecycleController.java:55)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forEachContainer(ContainerLifecycleController.java:209)
- at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.setupContainers(ContainerLifecycleController.java:54)
- 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:606)
- 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)
解决方法
应该将环境变量JBOSS_HOME设置为jBoss安装路径.否则,应将标签属性添加到容器标签中的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">
- <container qualifier="jboss" default="true">
- <configuration>
- <property name="jbossHome">/path/to/jboss/as</property>
- </configuration>
- </container>
来自示例应用程序jboss-javaee6-webapp