Arquillian / JUnit测试从控制台运行,但不在Eclipse内部运行

时间:2011-07-22 14:42:14

标签: eclipse maven junit jboss-arquillian

我已经在一些JUnit测试中设置了我们的项目,这些测试由Arquillian在完整的JBoss Server中运行(在一个名为 jboss-remote-6 的配置文件中)。我几乎完成了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)
(...)

我正确地将此项目的Maven配置文件设置为“jbossas-remote-6”,如pom.xml中所述。我究竟做错了什么?谷歌在这个特定的方面没有帮助。

祝你好运, 塞巴斯蒂安

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:0)

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