3

我有一个关于maven的问题。

我有文件名以 *Test 结尾的单元测试和文件名以 *IT 结尾的集成测试。

我的理解是,surefire 将运行单元测试,而 failsafe 将运行集成测试。

当我运行时: mvn clean install

单元测试和集成测试都运行。

当我运行时:

mvn 验证

这两个测试也都运行。

无论如何我可以配置maven,以便当我使用:mvn clean install时,只运行单元测试。当我使用 mvn verify 时,只运行集成测试?

我的 POM 构建部分如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>failsafe-maven-plugin</artifactId>
            <version>2.4.3-alpha-1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>integration-test</goal>
                        <goal>verify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>

    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

非常感谢

4

2 回答 2

1

正如这里提到的,按照惯例,假设集成测试被命名为 inTestNameIT.java而单元测试被命名为 in TestNameUT.java,您可以使用它includes来过滤集成测试或单元测试。

于 2012-04-24T16:43:36.577 回答
0

使用 Maven 设置单元集成和系统测试

我创建了一个 GitHub 存储库,您可以在其中查看可能的 Maven 设置。我在这里发布这个是因为我想与其他人分享我对这个设置的想法,我认为当有人搜索关于在 SO 上使用 maven 进行测试时可以找到这个

存储库包含功能齐全的设置。

GitHub 存储库:https ://github.com/StefanHeimberg/maven3-unit_integration_systemtest-setup

特征

  • Maven 3.3
  • 生产数据库和系统测试数据库迁移的 Flyway
  • 用于集成测试执行的 Arquillian
  • 用于单元测试的 Mockito

单元测试

  • 仅测试了一个类/业务功能
  • 没有数据库
  • 无容器
  • 最小的可能测试单元
  • 对其他类的依赖被模拟。(模仿)
  • 测试在被测试单元所在的工件的src/test中

集成测试

  • 多个类/业务功能一起编排和测试
  • 每个测试用例的内存数据库
  • EE 容器。为所有集成测试启动一次
  • Arquillian 远程管理野蝇
  • arquillian 战争中每个 TestCase 的数据源部署 (*-ds.xml)
  • 数据库表是从 JPA DDL (hibernate.hbm2ddl.auto=create-drop) 生成的
  • Arquillian Deployments 仅包含测试用例本身所需的类
  • 在 @Test 或 @Before 方法中手动加载的测试数据...(测试数据构建器...)
  • 测试与其他代码分开

系统测试

  • 最终 WAR/EAR 文件的完整 Wildfly 部署。
  • 通过 *.cli 命令行命令配置容器
  • 读取使用的数据库,因为我们需要 (hibernate.hbm2ddl.auto=validate)
  • 使用 maven-flyway-plugin 部署前的数据库设置
  • 使用 sql-maven-plugin 加载的测试数据
  • 测试与其他代码分开
于 2015-11-18T07:23:41.373 回答