4

我已经使用 Arquillian 在完整的 JBoss 服务器(在名为jboss-remote-6的配置文件中)运行的一些 JUnit 测试来设置我们的项目。我几乎按照http://docs.jboss.org/arquillian/reference/latest/en-US/html/gettingstarted.html的手册中的方式做了所有事情。

如果我mvn test在控制台中执行,一切都会正确执行并检查断言。

但是当我尝试在 Eclipse 中运行 JUnit 测试用例时,它会失败并出现以下异常:

org.jboss.arquillian.impl.client.deployment.ValidationException: DeploymentScenario contains targets not maching any defined Container in the registry. _DEFAULT_
    at  org.jboss.arquillian.impl.client.deployment.DeploymentGenerator.validate(DeploymentGenerator.java:95)
    at org.jboss.arquillian.impl.client.deployment.DeploymentGenerator.generateDeployment(DeploymentGenerator.java:77)
    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)
(...)

如 pom.xml 中所述,我将此项目的 Maven 配置文件正确设置为“jbossas-remote-6”。我究竟做错了什么?谷歌无法帮助解决这个特定问题。

最好的问候,塞巴斯蒂安

4

2 回答 2

3

我做了很多事情来完成这项工作。我的榜样是 jboss-javaee6 Maven 原型,它也使用 Arquillian 对远程 JBoss 6 服务器中的代码进行单元测试。我做了以下步骤:

添加 arquillian.xml

我在 src/test/resources 中添加了 Arquillian.xml:

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.com/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="jbossas-remote" default="true">
       <property name="httpPort">8080</property>
   </container>   
</arquillian>

收缩包装 WebArchive 而不是 JavaArchive

使用return Shrinkwrap.create( WebArchive.class, "test.war")而不是JavaArchive.class使方法addAsWebInfResource()方法可用,我可以在其中添加生成的空beans.xml

调整 pom.xml 以减少 CLASSPATH 长度

Eclipse 不断中断 javaw.exe 给出CreateProcess error=87消息。这是因为 CLASSPATH 对于控制台命令来说太长了。由于依赖项 jboss-as-client添加了 Bazillions 依赖项,我将其更改为jboss-as-profileservice-client,它工作正常并且依赖项少得多。

另一个重要的事情是在src/test/resources目录中有一个jndi.properties文件,如 Arquillian 文档中所述。但这里已经是这样了。我猜 arquillian.xml 有所作为——文档中从未提到过这个文件,只是在原型中看到了它。

这是我用于远程 JBoss 测试的 Maven 配置文件:

<profile>
  <id>jbossas-remote-6</id>
  <dependencies>
     <dependency>
        <groupId>org.jboss.arquillian.container</groupId>
        <artifactId>arquillian-jbossas-remote-6</artifactId>
        <version>1.0.0.Alpha5</version>            
     </dependency>
    <dependency>
        <groupId>org.jboss.spec</groupId>
        <artifactId>jboss-javaee-6.0</artifactId>
        <version>2.0.0.Final</version>
        <type>pom</type>
        <scope>provided</scope>
    </dependency> 
    <dependency>
        <groupId>org.jboss.jbossas</groupId>
        <artifactId>jboss-as-profileservice-client</artifactId>
        <version>6.0.0.Final</version>
        <type>pom</type>            
    </dependency>
  </dependencies>
<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
    </testResources>
</build>

我希望我的回答对某人有用。:)

于 2011-07-25T11:18:07.430 回答
0

请注意,还有一个与在 Eclipse 中运行测试相关的未解决问题: https ://issues.jboss.org/browse/ARQ-1037?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

于 2013-04-18T18:45:54.377 回答