我编写了 Jenkins 共享库,其中包含的帮助程序代码如下
def foo() {
...
return steps.build(job: jobName, wait: true, propagate: true, parameters: parameters)
}
class RunConfig implements Serializable {
...
RunWrapper runWrapper
}
我想为他们编写单元测试。
它需要RunWrapper
嘲笑。这是一个问题,因为RunWrapper
被声明为:
public RunWrapper(Run<?,?> build, boolean currentBuild) {
this.externalizableId = build.getExternalizableId();
...
所以我必须创建实例hudson.model.Run
以避免 NPE。
我找不到办法得到一些“假人” Run
。但是调用它的构造函数也很困难(来源),因为它需要Job
实例。
我到达它的最后一点是实现class MockJob extends Job
,class MockItemGroup<T extends Item> implements ItemGroup
以及运行时 NPE hudson.model.Job.saveNextBuildNumber
,Job 尝试在作业根目录中创建“nextBuildNumber”文件(模拟类null
作为根目录返回)。
也许我遗漏了一些东西,还有另一种测试方法RunWrapper
?