如何通过maven单独运行集成测试和单元测试?

时间:2017-04-18 10:41:28

标签: java maven unit-testing testing integration-testing

请参阅以下链接 - GitHub discussion on how to separate Integration Tests and Unit Tests

结果,我尝试了这个 -

     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <includes>
            <include>**/*Tests.java</include>
            <include>**/*Test.java</include>
          </includes>
          <excludes>
            <exclude>**/Abstract*.java</exclude>
            <exclude>**/IT*.java</exclude>
            <exclude>**/*IT.java</exclude>
            <exclude>**/*ITCase.java</exclude>
            <exclude>**/*IntegrationTest.java</exclude>
          </excludes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
            <configuration>
              <includes>
                <include>**/IT*.java</include>
                <include>**/*IT.java</include>
                <include>**/*ITCase.java</include>
                <include>**/*IntegrationTest.java</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>

这在某种程度上有效。意思是,surefire不执行集成测试,而Failsafe不执行单元测试。

但是,当我运行mvn verifymvn integration-test时,也会使用sure-fire插件。

必需结果:运行mvn integration-test时,不应运行单元测试。

以下三张图片适用于mvn verify

整合测试:

Integration Test

Tests Run

单元测试:

Unit Test

下图是我跑mvn test

的时候

Unit Tests

2 个答案:

答案 0 :(得分:6)

Maven的构建生命周期由几个阶段组成。当您调用特定的某个阶段时,将首先执行该阶段之前的所有阶段。 见https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

有两种方法可以解决你想要的问题:

答案 1 :(得分:1)

verify中定义的目标integration-testmaven-failsafe-plugin都会使用surefire运行集成测试用例。这里的事情按预期工作,并按照指南提供。请参考link 了解更多详情:

相关问题