Jenkins管道-工作流CPS插件JAR依赖项

Jenkins管道-工作流CPS插件JAR依赖项,jenkins,gradle,dependencies,pom.xml,jenkins-pipeline,Jenkins,Gradle,Dependencies,Pom.xml,Jenkins Pipeline,我正在为应用程序中使用的代码实现单元测试。具体来说,我需要模拟Jenkins文件中可用的步骤对象,它是org.jenkinsci.plugins.workflow.cps.DSL的一个实例。在我的Gradle构建中,我指定了如下依赖项: testCompile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.30', ext: 'jar' 这是上面这个类的宿主项目。没有将ext指定为JAR,

我正在为应用程序中使用的代码实现单元测试。具体来说,我需要模拟Jenkins文件中可用的
步骤
对象,它是
org.jenkinsci.plugins.workflow.cps.DSL
的一个实例。在我的Gradle构建中,我指定了如下依赖项:

testCompile group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.30', ext: 'jar'

这是上面这个类的宿主项目。没有将
ext
指定为JAR,Gradle检索
.hpi
文件,因为这是在项目的pom.xml中定义的包;显然,我需要重写这个,并为我的项目获取JAR。但是,在执行此操作时,Gradle没有下载
工作流cps
JAR的可传递依赖项,我发现自己必须使用通过试错确定的所有依赖项填充build.Gradle。是否有方法检索可传递的依赖项,或者这是工作流cps项目及其定义pom.xml的方式的限制?

您想要模拟的cps类不会包含插件或工作流库引入的方法/变量,因此这种方法可能不会完全令人满意

面对同样的挑战,我采取了务实的方法,在测试源代码中创建自己的TestScript接口并模拟它,而不是在类中键入脚本引用

缺点是没有IDE代码检查引用脚本的内容,并且在添加测试时必须手动向TestScript添加签名(这也很容易出错,因为我已经手动确保这些签名匹配)


但是它可以工作,并且避免被拖入插件依赖地狱。

您想要模拟的CPS类不会包含插件或工作流库引入的方法/变量,因此这种方法可能不会完全令人满意

面对同样的挑战,我采取了务实的方法,在测试源代码中创建自己的TestScript接口并模拟它,而不是在类中键入脚本引用

缺点是没有IDE代码检查引用脚本的内容,并且在添加测试时必须手动向TestScript添加签名(这也很容易出错,因为我已经手动确保这些签名匹配)


但它可以工作,并且避免被拖入插件依赖地狱。

您使用的是什么测试框架?我使用的是Spock。我一直保持
vars
目录的轻量级,并将复杂的逻辑添加到
src
中,这样我就可以使用标准单元测试来测试库。您使用的是什么测试框架?我使用的是Spock。我保持了
vars
目录的轻量级,并将复杂的逻辑添加到
src
中,因此我可以使用标准单元测试来测试库。