【问题标题】:Run integration tests on CI server only using maven仅使用 maven 在 CI 服务器上运行集成测试
【发布时间】:2013-02-16 17:10:48
【问题描述】:

每次构建都运行单元测试但完全跳过集成测试阶段是否明智 - 将其留给 CI 服务器?

目前我正在开发一个 JavaEE 项目,该项目几乎只包含一些集成测试,这些测试写得不好并且需要很多时间。每次我进行任何更改时,我都必须等待几分钟才能构建(大约 90% 的时间是这些集成测试)。

我的想法是配置一些 CI 服务器,例如Jenkins,以便它可以获取对存储库的任何提交(甚至在 maven 构建之后更好)并运行带有集成测试的 maven 构建。但是是否可以配置 maven,当我输入 mvn install 时,它会编译-运行单元测试-构建项目,但完全省略集成阶段(以加快开发速度)。然后 CI 会重新开始并再次开始运行构建,但这一次需要集成测试吗?

这样,更改一些代码和部署之间的时间会更短,也不会那么令人沮丧,并且任何与集成相关的错误都将在 CI 服务器完成构建后的几分钟内被缓存。

这是个好主意吗?谁能建议如何配置 Maven 来获得这种行为?

【问题讨论】:

    标签: jakarta-ee maven continuous-integration


    【解决方案1】:

    您应该能够使用配置文件执行此操作。尽管我可能需要有关您的集成测试配置的更多信息。多年来,我一直在使用 maven-failsafe-plugin 和配置文件的组合来处理项目。这是一个来自 pom 的示例 sn-p:

    <profiles>
        <profile>
            <id>integration-tests</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-failsafe-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>integration-test</id>
                                <goals>
                                    <goal>integration-test</goal>
                                </goals>
                                <configuration>
                                    ...
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    在正常的本地开发过程中,运行 mvn install 不应运行通过 maven-failsafe-plugin 运行的集成测试。然后,您可以将 CI 服务器配置为运行 mvn clean install -Pintegration-tests

    【讨论】:

    • 谢谢,这正是我一直在寻找的。当我有时间设置时,我会尝试这种方法。
    【解决方案2】:

    首先,我认为这是个好主意。这将使您的开发周期更快。

    我不知道在执行 mvn install 时完全省略集成测试阶段的方法。您可以在开发过程中执行“mvn clean package”吗?如果这不是一个选项,您使用什么插件进行集成测试?大多数插件都有一个属性“skip”,您可以使用它来跳过插件的执行。您可能希望使用配置文件来为不同的场景打开和关闭“跳过”。

    【讨论】:

    • 感谢鼓励 :) 我对集成测试和 maven 比较陌生,所以我还没有选择任何插件。我想我会使用另一个答案中提到的 maven-failsafe-plugin。
    猜你喜欢
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多