使用 Arquillian 和 Wildfly 进行集成测试

Posted

技术标签:

【中文标题】使用 Arquillian 和 Wildfly 进行集成测试【英文标题】:Integration test with Arquillian and Wildfly 【发布时间】:2014-03-18 02:08:57 【问题描述】:

我尝试使用 Arquillian 和 Wildfly 运行集成测试。

我在 Maven 中的依赖项如下所示:

<dependency>
  <groupId>org.jboss.arquillian</groupId>
  <artifactId>arquillian-bom</artifactId>
  <version>1.1.2.Final-wildfly-1</version>
  <type>pom</type>
  <scope>import</scope>
</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.Final</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.wildfly</groupId>
  <artifactId>wildfly-embedded</artifactId>
  <version>8.0.0.Final</version>
</dependency>

是否需要同时包含 wildfly-arquillian-container-embedded 和 wildfly-embedded?

运行测试时,出现以下错误:

[main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
Cannot not load JBoss LogManager. The LogManager has likely been accessed prior to this initialization.
[main] INFO  org.jboss.msc - JBoss MSC version 1.2.0.Final
Feb 18, 2014 11:34:08 AM org.jboss.as.server.ApplicationServerService start
INFO: JBAS015899: WildFly 8.0.0.Final "WildFly" starting
Feb 18, 2014 11:34:13 AM org.jboss.as.controller.AbstractOperationContext executeStep
ERROR: JBAS014612: Operation ("parallel-extension-add") failed - address: ([])
java.lang.RuntimeException: JBAS014670: Failed initializing module org.jboss.as.logging
at org.jboss.as.controller.extension.ParallelExtensionAddHandler$1.execute(ParallelExtensionAddHandler.java:99)
at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:591)
at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:469)
at org.jboss.as.controller.AbstractOperationContext.completeStepInternal(AbstractOperationContext.java:273)
at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:268)
at org.jboss.as.controller.ModelControllerImpl.boot(ModelControllerImpl.java:314)
at org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:294)
at org.jboss.as.server.ServerService.boot(ServerService.java:356)
at org.jboss.as.server.ServerService.boot(ServerService.java:331)
at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:256)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException:
JBAS011592: The logging subsystem requires the log manager to be
org.jboss.logmanager.LogManager. The subsystem has not be initialized and cannot be
used.
To use JBoss Log Manager you must add the system property "java.util.logging.manager"
and set it to "org.jboss.logmanager.LogManager"

【问题讨论】:

【参考方案1】:

添加它会起作用,我遇到了同样的问题(在 pom.xml 中),版本正确:

    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.3.0.Final</version>
    </dependency>

【讨论】:

【参考方案2】:

我在pom.xmlplugins 部分添加了以下内容:

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12</version>
    <configuration>
      <systemProperties>
        <property>
          <name>java.util.logging.manager</name>
          <value>org.jboss.logmanager.LogManager</value>
        </property>
      </systemProperties>
    </configuration>
  </plugin>

让抱怨消失。我不确定这是否是错误。我认为如果嵌入式容器在没有任何额外配置的情况下工作会更好。

【讨论】:

请在wildfly jira issues.jboss.org/browse/WFLY 中创建问题,以便可以在wildfly 中修复。

以上是关于使用 Arquillian 和 Wildfly 进行集成测试的主要内容,如果未能解决你的问题,请参考以下文章

Arquillian:嵌入野蝇?

使用arquillian测试远程客户端jndi查找

是否可以使用arquillian资源进行参数化测试?

在 Equinox 中运行 Arquillian

使用 Arquillian 时如何引用放置在 WEB-INF 文件夹中的文件?

使用 Postgres DB 的 Arquillian 的 Tomee 用户缺少权限或找不到对象