如何让我的 Maven 集成测试运行

新手上路,请多包涵

我有一个 maven2 多模块项目,在我的每个子模块中,我都有名为 Test.javaIntegration.java 的 JUnit 测试,分别用于单元测试和集成测试。当我执行时:

mvn test

执行子模块中的所有 JUnit 测试 *Test.java 。当我执行

mvn test -Dtest=**/*Integration

Integration.java 测试都没有在子模块中执行。

这些对我来说似乎是完全相同的命令,但是带有 -Dtest= /*Integration** 的命令不起作用它显示在父级运行的 0 个测试,其中没有任何测试

原文由 Peter Delaney 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 835
2 个回答

您可以设置 Maven 的 Surefire 来分别运行单元测试和集成测试。在标准单元测试阶段,您运行所有与集成测试不匹配的模式。然后 创建仅运行集成测试的第二个测试阶段

这是一个例子:

     <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <excludes>
          <exclude>**/*IntegrationTest.java</exclude>
        </excludes>
      </configuration>
      <executions>
        <execution>
          <id>integration-test</id>
          <goals>
            <goal>test</goal>
          </goals>
          <phase>integration-test</phase>
          <configuration>
            <excludes>
              <exclude>none</exclude>
            </excludes>
            <includes>
              <include>**/*IntegrationTest.java</include>
            </includes>
          </configuration>
        </execution>
      </executions>
    </plugin>

原文由 serg10 发布,翻译遵循 CC BY-SA 3.0 许可协议

Maven 构建生命周期 现在包括用于运行集成测试的“集成测试”阶段,这些测试与“测试”阶段运行的单元测试分开运行。它在“package”之后运行,因此如果您运行“mvn verify”、“mvn install”或“mvn deploy”,集成测试将一路运行。

默认情况下,集成测试运行名为 **/IT*.java**/*IT.java**/*ITCase.java 的测试类,但这可以配置。

有关如何连接这一切的详细信息,请参阅 Failsafe 插件Failsafe 使用页面(在我撰写本文时未从上一页正确链接),并查看 此 Sonatype 博客文章

原文由 Kief 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题