【发布时间】:2017-11-08 10:19:17
【问题描述】:
我已经编写了 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 的方法。但是调用它的构造函数也很难(sources),因为它需要在Job实例中。
我到达的最后一点是从hudson.model.Job.saveNextBuildNumber 实现class MockJob extends Job、class MockItemGroup<T extends Item> implements ItemGroup 和运行时NPE,其中Job 尝试在作业根目录中创建“nextBuildNumber”文件(模拟类返回null 作为根目录)。
也许我遗漏了什么,还有另一种方法可以测试RunWrapper?
【问题讨论】:
标签: jenkins jenkins-pipeline jenkins-pipeline-unit