【问题标题】:Tycho: How to prevent deployment in case of JUnit test failures?Tycho:在 JUnit 测试失败的情况下如何防止部署?
【发布时间】:2011-08-31 13:16:47
【问题描述】:

我收到了带有一些单元测试的eclipse-plugin
在 maven 中,我将单元测试保存在同一个包中,并在 pom.xml 中指定 junit 作为测试依赖项。
现在我想切换到 tycho 并且我读到 tycho 正在寻找一个具有相同名称的包以及一个被执行的后缀 ".tests"。但是我想将我的单元测试保留在测试包中,这样如果任何测试失败,包的构建就会失败。否则 maven 可能会在单元测试未成功完成的地方安装/部署工件..

有没有办法使用 tycho 将单元测试保持在同一个包中?
您如何管理 tycho 构建中的单元测试?

更新:好的,我现在得到了两个单独的包,一个 eclipse-plugin 和一个 eclipse-test-plugin。 Tycho 在同一个反应器中构建它们,但我的eclipse-plugin 被部署,尽管单元测试失败了。现在我在我的 nexus repo 中有一个损坏的工件...
当单元测试没有成功完成时,有没有办法强制构建失败?

【问题讨论】:

    标签: unit-testing maven junit osgi tycho


    【解决方案1】:

    我知道这个话题很老了,但我找到了这么简单的解决方案。 您可以配置将在构建结束时部署的工件。

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.8.2</version>
                <configuration>
                    <deployAtEnd>true</deployAtEnd>
                </configuration>
            </plugin>
    

    如果您不忽略测试中的失败,并且如果某些失败出现构建失败,则不会部署任何工件。

    【讨论】:

      【解决方案2】:

      单元测试不能保存在同一个包中,因为 tycho 使用 MANIFEST-first 方法来处理依赖关系。

      如果您将测试和生产代码放在同一个包中,您将使用 junit 等测试范围的依赖项污染您的生产包。

      与 maven 不同,OSGi 没有依赖的“范围”属性。

      【讨论】:

      • 好的。我明白了你的意思,但是当单元测试失败时,有没有可能强制测试包的构建失败?
      • 我认为解决这个问题的唯一方法是分两个阶段运行 maven;首先运行“mvn clean package”,它将执行测试,然后,如果成功,则运行“mvn install”或“mvn deploy”——你可以围绕它包装一个简单的脚本,查看第一个 mvn 调用的响应代码
      • mvn clean package 不足以在 Tycho 中运行测试。您需要致电mvn clean verify
      【解决方案3】:

      这实际上是 Tycho 的一个限制:您不能在同一个模块中拥有测试和生产代码,因此如果您调用 mvn clean deploy,则在执行相应的测试之前部署生产工件。

      要仅在成功执行测试后进行部署,有一个简单的解决方法:首先使用mvn clean verify 运行所有测试,然后仅在成功后再次使用mvn clean deploy 运行构建。 (如果您有不稳定的测试,您甚至可能希望在第二次调用中使用 -DskipTests 禁用测试执行,以确保您没有得到部分部署。)

      【讨论】:

      • 顺便说一句,多模块纯 Maven 项目具有相同的限制:使用mvn deploy,第一个工件也将在第二个工件构建和测试之前部署 - 尽管第二个测试也可能检测到第一个工件中的问题。
      猜你喜欢
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 2016-03-29
      相关资源
      最近更新 更多