我得到了eclipse-plugin
一些单元测试
在maven中,我将单元测试保存在同一个包中,并指定junit作为pom.xml
中的测试依赖项
现在我想切换到tycho,我读到tycho正在寻找一个具有相同名称的包以及一个被执行的后缀".tests"
。但是我想将我的单元测试保留在测试的bundle中,这样如果任何测试失败,bundle的构建就会失败。否则,maven可能会在单元测试未成功完成的情况下安装/部署工件。
有没有办法使用tycho将单元测试保持在同一个捆绑中?
你如何在tycho构建中管理单元测试?
更新:好的我现在有两个单独的捆绑包eclipse-plugin
和eclipse-test-plugin
。 Tycho在同一个反应堆中构建它们,但是我的eclipse-plugin
部署了,尽管单元测试失败了。现在我的nexus repo中有一个破损的神器......
当单元测试没有成功完成时,有没有办法强制执行buildfailure?
答案 0 :(得分:1)
单元测试不能保存在同一个包中,因为tycho使用MANIFEST优先方法来依赖。
如果您将测试和生产代码保存在同一个包中,您将使用测试范围的依赖项(如junit)污染您的高效包。
与maven不同,OSGi没有依赖项的“范围”属性。
答案 1 :(得分: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 :(得分:-1)
这实际上是Tycho的限制:您不能在同一模块中进行测试和生产代码,因此如果您调用mvn clean deploy
,则在执行相应的测试之前部署生产工件
要仅在成功执行测试后进行部署,有一个简单的解决方法:首先使用mvn clean verify
运行所有测试,并且只有在成功运行mvn clean deploy
的构建时才会运行。 (如果您有不稳定的测试,您甚至可能希望在第二次调用中使用-DskipTests
禁用测试执行,以确保您不会进行部分部署。)