2015-05-18 20 views
0

我想配置的Arquillian與wildfly但我下面獲取的錯誤在運行測試過程:的Arquillian:試圖註冊相同的觀察,ServerSetupObserver多次

java.lang.RuntimeException: Could not create new instance of class org.jboss.arquillian.test.impl.EventTestRunnerAdaptor 
    at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:165)....... 
Caused by: java.lang.reflect.InvocationTargetException: null 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    ........... 
Caused by: java.lang.RuntimeException: Could not create new instance of class org.jboss.arquillian.core.impl.ManagerImpl 
    at org.jboss.arquillian.core.spi.SecurityActions.newInstance(SecurityActions.java:165) 
    at ................. 
Caused by: java.lang.reflect.InvocationTargetException: null 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at ............... 
Caused by: java.lang.RuntimeException: Could not create and process manager 
    at org.jboss.arquillian.core.impl.ManagerImpl.<init>(ManagerImpl.java:105)...... 
Caused by: java.lang.IllegalArgumentException: Attempted to register the same Observer: org.jboss.as.arquillian.container.ServerSetupObserver multiple times, please check classpath for conflicting jar versions 
    at org.jboss.arquillian.core.impl.ManagerImpl$2.observer(ManagerImpl.java:354) 
    at org.jboss.arquillian.core.impl.loadable.LoadableExtensionLoader$1.observer(LoadableExtensionLoader.java:101) 
    at org.jboss.as.arquillian.container.CommonContainerExtension.register(CommonContainerExtension.java:41) 
    at org.jboss.as.arquillian.container.remote.RemoteContainerExtension.register(RemoteContainerExtension.java:33) 

的pom.xml

<properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <!-- maven-compiler-plugin --> 
     <maven.compiler.target>1.7</maven.compiler.target> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <!-- build details --> 
     <timestamp>${maven.build.timestamp}</timestamp> 
     <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format> 
     <build_version>${project.version}</build_version> 
     <build_number>00001</build_number> 
     <!-- dependency version variables --> 
     <struts2.version>2.3.24</struts2.version> 
     <hibernate.version>4.3.9.Final</hibernate.version> 
     <resteasy.version>3.0.11.Final</resteasy.version> 
     <apache.common.version>3.3.2</apache.common.version> 
     <junit-version>4.12</junit-version> 
     <arquillian-version>1.1.8.Final</arquillian-version> 
     <arquillian-transaction-version>1.0.1.Final</arquillian-transaction-version> 
     <arquillian-wildfly-version>8.2.0.Final</arquillian-wildfly-version> 
    </properties> 
    <repositories> 
     <repository> 
      <id>JBoss Repository</id> 
      <url>https://repository.jboss.org/nexus/content/groups/public/</url> 
     </repository> 
    </repositories> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.spec</groupId> 
       <artifactId>jboss-javaee-7.0</artifactId> 
       <version>1.0.0.Final</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      <!-- -JUNIT--> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>${junit-version}</version> 
      </dependency> 
      <!-- Arquillian itself--> 
      <dependency> 
       <groupId>org.jboss.arquillian</groupId> 
       <artifactId>arquillian-bom</artifactId> 
       <version>${arquillian-version}</version> 
       <scope>import</scope> 
       <type>pom</type> 
      </dependency> 
      <!-- this is in an extention to arquillian it is optional--> 
      <dependency> 
       <groupId>org.jboss.arquillian.extension</groupId> 
       <artifactId>arquillian-transaction-bom</artifactId> 
       <version>${arquillian-transaction-version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
      <!-- this is container adapter for wildfly--> 
      <dependency> 
       <groupId>org.wildfly</groupId> 
       <artifactId>wildfly-arquillian-container-embedded</artifactId> 
       <version>${arquillian-wildfly-version}</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 

     <!-- Test dependencies --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.junit</groupId> 
      <artifactId>arquillian-junit-container</artifactId> 
      <version>1.1.8.Final</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.wildfly</groupId> 
      <artifactId>wildfly-arquillian-container-embedded</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.extension</groupId> 
      <artifactId>arquillian-transaction-jta</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.protocol</groupId> 
      <artifactId>arquillian-protocol-servlet</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.weld</groupId> 
      <artifactId>weld-core</artifactId> 
      <version>1.1.5.Final</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.4</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- struts 2 dependencies --> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-convention-plugin</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-json-plugin</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 

     <!-- Import the CDI API --> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-cdi-plugin</artifactId> 
      <version>${struts2.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.enterprise</groupId> 
      <artifactId>cdi-api</artifactId> 
      <version>1.2</version><!--$NO-MVN-MAN-VER$--> 
     </dependency> 

     <!-- Import the Common Annotations API (JSR-250) --> 
     <dependency> 
      <groupId>org.jboss.spec.javax.annotation</groupId> 
      <artifactId>jboss-annotations-api_1.2_spec</artifactId> 
     </dependency> 

     <!-- Import the Servlet API --> 
     <dependency> 
      <groupId>org.jboss.spec.javax.servlet</groupId> 
      <artifactId>jboss-servlet-api_3.1_spec</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>7.0</version> 
     </dependency> 

     <!-- Jboss weld --> 
     <dependency> 
      <groupId>org.jboss.weld</groupId> 
      <artifactId>weld-core</artifactId> 
      <version>2.2.2.Final</version> 
      <scope>provided</scope> 
     </dependency> 

    </dependencies> 
    <build> 
     <finalName>fms</finalName> 
      <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
       <filtering>true</filtering> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.wildfly.plugins</groupId> 
       <artifactId>wildfly-maven-plugin</artifactId> 
       <version>1.0.0.Final</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugin</groupId> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.18.1</version> 
      </plugin> 
     </plugins> 
    </build> 
    <profiles> 
     <profile> 
      <!-- An optional Arquillian testing profile that executes tests in your 
       Wildfly instance --> 
      <!-- This profile will start a new Wildfly instance, and execute the 
       test, shutting it down when done --> 
      <!-- Run with: mvn clean test -Parq-wildfly-managed --> 
      <id>arq-wildfly-managed</id> 
      <dependencies> 
       <dependency> 
        <groupId>org.wildfly.arquillian</groupId> 
        <artifactId>wildfly-arquillian-container-managed</artifactId> 
        <version>1.0.0.Alpha5</version> 
        <scope>test</scope> 
       </dependency> 
      </dependencies> 
     </profile> 
     <profile> 
      <!-- An optional Arquillian testing profile that executes tests in a remote 
       Wildfly instance --> 
      <!-- Run with: mvn clean test -Parq-wildfly-remote --> 
      <id>arq-wildfly-remote</id> 
      <dependencies> 
       <dependency> 
        <groupId>org.wildfly.arquillian</groupId> 
        <artifactId>wildfly-arquillian-container-remote</artifactId> 
        <version>1.0.0.Alpha5</version> 
        <scope>test</scope> 
       </dependency> 
      </dependencies> 
      <build> 
       <testResources> 
        <testResource> 
         <directory>src/test/resources</directory> 
         <filtering>true</filtering> 
        </testResource> 
       </testResources> 
       <plugins> 
        <plugin> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.18.1</version> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
     <profile> 
      <id>development</id> 
      <properties> 
       <env>development</env> 
       <fms.restws.url>http://localhost:8080/fms/rs/json</fms.restws.url> 
      </properties> 
     </profile> 
     <profile> 
      <id>prod</id> 
      <properties> 
       <env>prod</env> 
       <fms.restws.url>http://prodserver:8080/fms/rs/json</fms.restws.url> 
      </properties> 
     </profile> 
    </profiles> 

GreeterTest.java

@RunWith(Arquillian.class) public class GreeterTest { 

@Inject 
Greeter greeter; 

@Deployment 
public static Archive<?> createDeployment() { 
    return ShrinkWrap.create(WebArchive.class, "fms-tes.war") 
      .addClass(Greeter.class) 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 
} 

@Test 
public void should_create_greeting() throws Exception { 
    Assert.assertEquals("Hello, Earthling!",greeter.createGreeting("Earthling")); 
    greeter.greet(System.out, "Earthling"); 
} } 

回答

4

卸下dependencyManagement和依賴defin org.wildfly的ition:wildfly-arquillian-container-embedded。您也可以使用org.wildfly.arquillian:xxxx適配器來設置配置文件。它們在技術上非常相似,但適用於兩個不同版本的WildFly服務器。基於相同的代碼庫,他們都試圖註冊相同的觀察者。

相關問題