Maven:如何设置maven以单独运行单元测试和集成测试

时间:2012-04-24 16:38:51

标签: java unit-testing maven integration-testing

我对maven有疑问。

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

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

当我跑步时:    mvn clean install

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

当我跑步时:

mvn verify

这两项测试也都在运行。

无论如何我可以配置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>

非常感谢

2 个答案:

答案 0 :(得分:1)

正如前面提到的here,按照惯例,假设集成测试在TestNameIT.java中命名,单元测试在TestNameUT.java中命名,您可以使用includes来过滤集成测试或单元测试。

答案 1 :(得分:0)

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

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

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

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

功能

  • Maven 3.3
  • 用于数据库迁移生产和系统测试数据库的Flyway
  • Arquillian for Integration Test execution
  • Mockito进行单元测试

单元测试

  • 仅测试了一个班级/商务功能
  • 无数据库
  • 没有容器
  • 最小的测试单位
  • 对其他类的依赖是模拟的。 (的Mockito)
  • 测试位于测试类所在单位所在工件的 src / test

集成-测试

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

系统测试

  • 完整的Wildfly部署最终的WAR / EAR文件。
  • 通过* .cli命令行命令进行容器配置
  • 读取因使用而导致的数据库(hibernate.hbm2ddl.auto = validate)
  • 使用maven-flyway-plugin部署之前的数据库设置
  • 使用sql-maven-plugin
  • 加载的Testdata
  • 测试与其他代码分开