如何针对多个版本的依赖项运行单元测试

Glu*_*uck 7 java junit unit-testing gradle spock

我正在写foo一个依赖于它的java库bar:1.1+.但是bar随着时间的推移,库已经发生了很大变化,我想确保我的库与每个版本的bar(1.1... 1.10)兼容.

因此,我希望(在CI期间)使用类路径运行每个单元测试,包括bar:1.X每个版本的可用版本bar.

我正在使用gradle和junit/spock,但我愿意接受各种变化的解决方案.

我可以通过gradle测试任务复制,但这非常麻烦,测试结果可能很难聚合.理想情况下,我会在我的测试旁边定义它应该运行哪些版本的条,例如:

@RunWith("com.acme:bar:1.1..1.10")
public class MyTest { ... }
Run Code Online (Sandbox Code Playgroud)

但我发现没有工具/跑步者.

Gar*_*rry 0

这与 Maven 有关,不确定它如何与 CI 配合,但可能会帮助您入门。

一种选择可能是使用Maven Archetype <-更多信息

使用mvn archetype:generate,您可以动态生成您需要的版本的项目

mvn archetype:generate                                  
  -DarchetypeGroupId=<archetype-groupId>                
  -DarchetypeArtifactId=<archetype-artifactId>          
  -DarchetypeVersion=<archetype-version>                
  -DgroupId=<my.groupid>                                
  -DartifactId=<my-artifactId>
  -Dversion=<custom-version>
Run Code Online (Sandbox Code Playgroud)