2015-05-27 96 views
2

我試圖用arquillian框架來測試我的應用程序。因此,我配置了pom和arquillian.xml以在wildfly遠程容器中運行我的測試用例。即使我在arquillian.xml中提供了遠程地址,測試用例仍在本地wildfly服務器中運行。我已經配置了服務器配置文件並使用remote-wildfly服務器配置文件運行測試。Arquillian測試在本地服務器上運行,而不是在遠程運行Wildfly服務器

測試類

@RunWith(Arquillian.class) 
public class BasicTest { 

@Deployment 
public static JavaArchive createDeployment() { 
    return ShrinkWrap.create(JavaArchive.class).addClass(Greeter.class) 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); 
} 

@Inject 
private Greeter greeter; 

@Test 
public void shouldBeAbleTo() { 
    assertEquals("Hello, aliens!", greeter.createGreeting("aliens")); 
} 

}

的pom.xml

<?xml version="1.0"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0  http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>org.jboss.aerogear</groupId> 
<artifactId>arquillian-wildfly-example</artifactId> 
<packaging>jar</packaging> 
<version>0.0.1</version> 


<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <version.org.jboss.arquillian>1.1.5.Final</version.org.jboss.arquillian> 
    <version.org.wildfly>8.1.0.Final</version.org.wildfly> 
    <version.junit>4.11</version.junit> 
</properties> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.17</version> 
      </plugin> 
      <!--This plugin's configuration is used to store Eclipse m2e settings 
       only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId> 
             org.apache.maven.plugins 
            </groupId> 
            <artifactId> 
             maven-dependency-plugin 
            </artifactId> 
            <versionRange> 
             [2.1,) 
            </versionRange> 
            <goals> 
             <goal>unpack</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <ignore></ignore> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<dependencyManagement> 
    <dependencies> 

     <!-- Arquillian BOM (Bill Of Materials). --> 
     <dependency> 
      <groupId>org.jboss.arquillian</groupId> 
      <artifactId>arquillian-bom</artifactId> 
      <version>${version.org.jboss.arquillian}</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 

     <!-- JUnit regression testing framework. --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${version.junit}</version> 
     </dependency> 

    </dependencies> 
</dependencyManagement> 

<profiles> 

    <!-- Arquillian WildFly remote profile --> 
    <profile> 
     <id>arq-widlfly-remote</id> 
     <dependencies> 
      <dependency> 
       <groupId>org.wildfly</groupId> 
       <artifactId>wildfly-arquillian-container-remote</artifactId> 
       <version>8.2.0.Final</version> 
       <scope>test</scope> 
      </dependency> 
     </dependencies> 
    </profile> 
</profiles> 


<dependencies> 

    <!-- JUnit regression testing framework. --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
    </dependency> 

    <!-- JUnit Container Implementation for the Arquillian Project --> 
    <dependency> 
     <groupId>org.jboss.arquillian.junit</groupId> 
     <artifactId>arquillian-junit-container</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.arquillian.protocol</groupId> 
     <artifactId>arquillian-protocol-servlet</artifactId> 
     <scope>test</scope> 
    </dependency> 

</dependencies> 

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"> 

<!-- Sets the protocol which is how Arquillian talks and executes the tests inside the container --> 
<defaultProtocol type="Servlet 3.0" /> 

<!-- Configuration to be used when the WidlFly remote profile is active --> 
<container qualifier="widlfly-remote"> 
    <configuration> 
     <property name="managementAddress">xxxxx</property> 
     <property name="managementPort">xxxx</property> 
     <property name="username">xxxx</property> 
     <property name="password">xxxx</property> 
    </configuration> 
</container> 

但測試用例127.0.0.1:9990 wildfly服務器上運行,這是我在arquillian.xml指定的遠程wildfly服務器上未運行。我必須做哪些配置/更改。請幫幫我。

回答

6

您需要告訴Arquillian您要運行哪個arquillian.xml容器限定符,因爲您可以在同一個xml文件中定義多個限定符。如果你只有一個元素並且只需要一個元素,你可以在其上定義default = true屬性,在這種情況下,Arquillian將使用該元素,除非定義了其他元素。

<container qualifier="widlfly-remote" default="true"> 
    ... 
</container> 

否則,您可以定義-Darquillian.launch = widlfly遠程的系統屬性在你的Maven神火執行動態地設置它。

基本上在當前設置你不告訴的Arquillian這限定符使用,這意味着它將與什麼都對你有classpath中的容器適配器的默認值運行(這就是爲什麼你看到的是127.0.0.1用過的。)。

+0

我已經在maven surefire中定義了-Darquillian.launch = widlfly-remote作爲系統屬性。現在我得到像java.lang.RuntimeException一樣的錯誤:無法創建類org.jboss.arquillian.test.impl.EventTestRunnerAdaptor的新實例,請參閱原因。 \t at org.jboss.arquillian.test.spi.SecurityActions.newInstance(SecurityActions.java:170) – Sri

+0

你有剩下的那個異常嗎? –

+0

是的。我只有這個例外。請幫幫我。 – Sri

相關問題