我有多个maven模块。DBLayer (包含所有实体),UserManagement (用户管理服务), WebApp
对于设置测试,我需要了解如何构建一切。
我想在一个嵌入式容器中测试每个模块。大家都知道,在每个模块中我都有我的测试文件夹,我把我的测试类放在那里。我是否需要在每个模块的测试类中放入ShrinkWrap设置(为测试准备嵌入式容器的代码),还是只有在webapp中才需要?
我还在每个模块的pom文件中加入了arquillian依赖。有没有更好的方法来添加这些依赖关系?
先谢谢你。
我想在一个嵌入式容器中测试每个模块(...)
如果你正在考虑使用嵌入式容器,请看一下以下内容 本回答. 丹-艾伦在他的短文中详细解释了这一点。嵌入式容器的危险. 请看一下。
在我看来,你使用的是Maven,那么下面的是 回答 你可能会发现,在将集成测试和单元测试分开方面很有用。简而言之:遵循Maven的命名惯例(只需在集成测试的名称中加入 "集成测试 "和 "单元测试")。*IT
后缀,例如 MyClassIT.java
),让 maven-failsafe-plugin
做它的工作。
我是否必须在每个模块测试类中放入ShrinkWrap设置(为测试准备嵌入式容器的代码),还是只在webapp中需要?
不幸的是,是的。这是因为你可能要为每个测试类准备不同的部署。但缺点很明显。
幸运的是,有 雅居乐套房扩建工程 让你实现这个目标。该扩展将强制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 指南。