【发布时间】:2015-08-11 18:11:19
【问题描述】:
我正在编写一个依赖于bar:1.1+ 的java 库foo。
但是库 bar 随着时间的推移发生了很大变化,我想确保我的库与 bar 的每个版本兼容(1.1 ... 1.10)。
所以我希望(在 CI 期间)使用包含 bar:1.X 的类路径运行我的每个单元测试,并且每个版本都可用 bar。
我正在使用 gradle 和 junit/spock,但我愿意接受不同的解决方案。
是的,我可以通过 gradle 复制测试任务,但这很麻烦,而且测试结果可能难以汇总。 理想情况下,我会在我的测试旁边定义它应该运行哪个版本的 bar,例如:
@RunWith("com.acme:bar:1.1..1.10")
public class MyTest { ... }
但我没有找到相应的工具/运行器。
【问题讨论】:
-
嗯,使用 Maven,您可以简单地定义多个配置文件并相应地使用这些配置文件开始测试(请参阅 stackoverflow.com/questions/166895/… )。我猜 gradle 也有类似的可能性。
-
只是想注意,您要在此处运行的测试实际上是集成测试,而不是单元测试。对于单元测试,通常会模拟出对 bar 库的依赖。
-
@unigeek 不是说你错了,但这可能取决于
bar是什么库,假设它是番石榴,没有理智的人会嘲笑它的所有用途^^ -
也许你可以在 Gradle 中生成依赖配置,每个配置都有一个版本的依赖。然后针对这些配置运行测试任务。很抱歉,我不是 Groovy 专家,无法就代码提示您。
-
你使用构建工具吗?哪一个? Maven,Gradle?您使用的是什么 CI 系统?詹金斯? GitHub Acrions?
标签: java unit-testing junit gradle spock