2012-09-18 35 views
1

我們正在嘗試使用TestNG框架在嵌入式tomcat容器上運行基於Spring的代碼的集成測試。如何使用Arquillian在應用程序服務器容器中測試Spring?

我們嘗試過使用現有的Arquillian Spring Extension,但沒有取得多大成功。也許一些缺失的配置。我們奉行instructions from this post

我們的POM包括以下依存關係:

 <dependency> 
     <groupId>org.jboss.arquillian</groupId> 
     <artifactId>arquillian-bom</artifactId> 
     <version>1.0.2.Final</version> 
     <scope>test</scope> 
     <type>pom</type> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.arquillian.testng</groupId> 
     <artifactId>arquillian-testng-container</artifactId> 
     <version>1.0.2.Final</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Spring Extension --> 
    <dependency> 
     <groupId>org.jboss.arquillian.extension</groupId> 
     <artifactId>arquillian-service-container-spring</artifactId> 
     <version>1.0.0.Beta1</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- testing END --> 

我們還增加了一個Tomcat嵌入的配置文件,以我們的POM。

 <profile> 
     <id>arquillian-tomcat-embedded-7</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.arquillian.container</groupId> 
       <artifactId>arquillian-tomcat-embedded-7</artifactId> 
       <version>1.0.0.CR3</version> 
       <scope>test</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.tomcat.embed</groupId> 
       <artifactId>tomcat-embed-core</artifactId> 
       <version>7.0.30</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.tomcat.embed</groupId> 
       <artifactId>tomcat-embed-jasper</artifactId> 
       <version>7.0.30</version> 
       <scope>provided</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.tomcat</groupId> 
       <artifactId>tomcat-juli</artifactId> 
       <version>7.0.30</version> 
      </dependency> 
      <dependency> 
       <groupId>org.eclipse.jdt.core.compiler</groupId> 
       <artifactId>ecj</artifactId> 
       <version>3.7</version> 
       <scope>test</scope> 
      </dependency> 

      <!-- Weld servlet for testing CDI injections --> 
      <dependency> 
       <groupId>org.jboss.weld.servlet</groupId> 
       <artifactId>weld-servlet</artifactId> 
       <version>1.1.9.Final</version> 
      </dependency> 
     </dependencies> 
    </profile> 

我們arquillian.xml看起來像......

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://jboss.org/schema/arquillian" 
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> 

<container qualifier="tomcat" default="true"> 
    <configuration> 
     <property name="unpackArchive">true</property> 
    </configuration> 
</container> 

我們也嘗試添加以下行到我們arquillian.xml

<extension qualifier="spring"> 
    <property name="autoPackage">true</property> 
    <property name="springVersion">3.0.0.RELEASE</property> 
    <property name="cglibVersion">2.2</property> 

    <property name="includeSnowdrop">true</property> 
    <property name="snowdropVersion">2.0.3.Final</property> 

    <property name="customContextClass">org.jboss.spring.vfs.context.VFSClassPathXmlApplicationContext</property> 
</extension> 

我們已經創建了一個空的測試和檢查嵌入式Tomcat啓動並運行測試。 下一步是驗證Arquillian Spring Extension是否正常工作,爲此我們試圖將Spring bean注入到我們的測試中。

問題是@SpringConfiguration註釋根本不可用。所以我們猜測我們錯過了一些配置。有關如何進行的任何線索?

回答

3

您正在使用嵌入式Spring容器的arquillian-service-container-spring工件。要使用另一個容器,您需要使用arquillian-service-deployer-spring-3和arquillian-service-integration-spring-inject構件。

服務部署人員爲部署添加了自動添加Spring依賴項,而service-integration-spring-inject在測試用例中添加了@Inject/@ Autowire支持。

https://github.com/arquillian/arquillian-showcase/blob/master/spring/spring-inject/pom.xml#L43

多其他的例子可以在這裏找到: https://github.com/arquillian/arquillian-showcase/tree/master/spring

相關問題