1

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

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

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

4

3 回答 3

1

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

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

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

于 2011-08-31T13:58:03.457 回答
1

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

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

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

于 2016-01-22T10:52:59.120 回答
-1

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

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

于 2012-08-28T07:23:49.473 回答