首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Arquillian在应用服务器容器中测试Spring?

如何使用Arquillian在应用服务器容器中测试Spring?
EN

Stack Overflow用户
提问于 2012-09-19 00:15:50
回答 1查看 4.4K关注 0票数 1

我们正在尝试使用TestNG框架在嵌入式tomcat容器上运行基于Spring的代码的集成测试。

我们已经尝试使用现有的Arquillian Spring扩展,但没有太多成功。可能是一些缺失的配置。我们一直在跟踪instructions from this post

我们的pom包含以下依赖关系:

代码语言:javascript
复制
        <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 -->

我们还向我们的pom添加了一个Tomcat嵌入式配置文件。

代码语言:javascript
复制
        <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看起来像..。

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<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扩展是否正常工作,为此,我们尝试将Spring bean注入到我们的测试中。

问题是@SpringConfiguration注解根本不可用。所以我们猜我们遗漏了一些配置。有什么关于如何进行的线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-19 06:48:58

您使用的是arquillian-service- container -spring工件,它是嵌入式Spring容器。要在另一个Container中使用if,您需要使用arquillian-service-deployer-spring-3和arquillian-service-integration-spring-inject工件。

service-deployer将自动添加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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12480975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档