如何使用arquillian进行多maven模块的集成测试?

问题描述 投票:3回答:1

我有多个maven模块。DBLayer (包含所有实体),UserManagement (用户管理服务), WebApp

对于设置测试,我需要了解如何构建一切。

我想在一个嵌入式容器中测试每个模块。大家都知道,在每个模块中我都有我的测试文件夹,我把我的测试类放在那里。我是否需要在每个模块的测试类中放入ShrinkWrap设置(为测试准备嵌入式容器的代码),还是只有在webapp中才需要?

我还在每个模块的pom文件中加入了arquillian依赖。有没有更好的方法来添加这些依赖关系?

先谢谢你。

testing module structure containers jboss-arquillian
1个回答
3
投票

我想在一个嵌入式容器中测试每个模块(...)

如果你正在考虑使用嵌入式容器,请看一下以下内容 本回答. 丹-艾伦在他的短文中详细解释了这一点。嵌入式容器的危险. 请看一下。

在我看来,你使用的是Maven,那么下面的是 回答 你可能会发现,在将集成测试和单元测试分开方面很有用。简而言之:遵循Maven的命名惯例(只需在集成测试的名称中加入 "集成测试 "和 "单元测试")。*IT 后缀,例如 MyClassIT.java),让 maven-failsafe-plugin 做它的工作。


我是否必须在每个模块测试类中放入ShrinkWrap设置(为测试准备嵌入式容器的代码),还是只在webapp中需要?

不幸的是,是的。这是因为你可能要为每个测试类准备不同的部署。但缺点很明显。

  1. 通常重复部署的设置。
  2. 减慢了测试的执行速度(每个测试用例都有一个新的部署操作)。

幸运的是,有 雅居乐套房扩建工程 让你实现这个目标。该扩展将强制TestSuite中的所有类从同一个 DeploymentScenario. 但据我所知,这是一个比表面上看起来更复杂的话题--请记住,这个扩展(虽然非常有用)可能无法与其他一些arquillian扩展一起工作。


我在每个模块的pom文件中也有arquillian的依赖关系。有没有更好的方法来添加这些依赖关系?

你的直觉是正确的:) 是的,有更好的方法。就我个人而言,我建议把依赖关系保持在 胳肢窝 只在父辈 pom.xml 文件,那么所有的子模块都会继承这个依赖关系。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>1.1.5.Final</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
    </dependencies>
</dependencyManagement>

一般来说,请务必阅读 开始使用Arquillian 指南。

© www.soinside.com 2019 - 2024. All rights reserved.