问题标签 [jenkins-pipeline-unit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1022 浏览

jenkins - 使用 Spock 使用存根方法模拟 Groovy 脚本对象?

我正在尝试做的事情

我有一个看起来像这样的脚本:

我将这个脚本加载到另一个脚本中,这样我就有了一个Script可以调用的 Groovy 对象doStuff。这是在一个脚本中,调用它myscript.groovy看起来像这样:

我希望能够模拟由stubScript返回的对象,并断言它被调用。理想情况下,类似于以下内容(假设已经被模拟):loaddoStuffload

但是,我在线上得到了一个 NPE:

如何Script以一种可以确保 doStuff 方法在我的测试中被存根并正确调用的方式来模拟对象?


为什么我这样做

我知道这是一个有点奇怪的用例。我想我应该给出一些背景信息,为什么我要这样做,以防人们想提出完全不同的方法来做这件事,而这可能不适用于我正在尝试做的事情。

我最近开始研究一个使用一些相当复杂的 Jenkins Pipeline 脚本的项目。为了在一定程度上模块化脚本,实用功能和不同管道的片段包含在不同的脚本中,并与doStuff.groovy上述类似地加载和执行。

我试图在使用此库引入一些测试的同时对脚本进行一些小改动:https ://github.com/lesfurets/JenkinsPipelineUnit

特别是在一个测试中,我想模拟一个特定的实用程序方法并断言它是根据管道的参数调用的。

因为这些脚本目前未经测试,相当复杂,所以我对它们很陌生,许多不同的项目都依赖于它们,我不愿意对代码的结构或模块化方式进行任何彻底的改变。

0 投票
2 回答
1770 浏览

maven - 如何在 Maven 下使用 JenkinsPipelineUnit 测试 Jenkinsfiles

我对使用 Jenkins 管道很陌生,想测试我的 Jenkinsfiles 和库。我找到了JenkinsPipelinUnit,但我无法让我的测试运行。
我正在使用 Maven 构建一个微服务,并添加了 JenkinsPipelinUnit 的依赖项。

我需要添加哪个 Maven 插件来运行测试?你添加了什么?您是否找到了任何好的示例或模板?

0 投票
2 回答
793 浏览

jenkins - 用于共享库的 JenkinsPipelineUnit 模拟 RunWrapper

我编写了 Jenkins 共享库,其中包含的帮助程序代码如下

我想为他们编写单元测试

它需要RunWrapper嘲笑。这是一个问题,因为RunWrapper被声明为:

所以我必须创建实例hudson.model.Run以避免 NPE。

我找不到办法得到一些“假人” Run。但是调用它的构造函数也很困难(来源),因为它需要Job实例。

我到达它的最后一点是实现class MockJob extends Jobclass MockItemGroup<T extends Item> implements ItemGroup以及运行时 NPE hudson.model.Job.saveNextBuildNumber,Job 尝试在作业根目录中创建“nextBuildNumber”文件(模拟类null作为根目录返回)。

也许我遗漏了一些东西,还有另一种测试方法RunWrapper

0 投票
1 回答
1634 浏览

unit-testing - 如何使用当前分支的 JenkinsPipelineUnit 共享库

我正在尝试使用 jenkinsPipelineUnit 来测试与我的共享库位于同一 git 存储库中的 JenkinsFile。此 Jenkinsfile 引用位于 src 中的共享库。看来我必须先提交我的共享库更改,然后才能测试它们,即使我在检索器中使用 localSource 也是如此。

如何在不先提交代码的情况下加载我的共享库并对它们进行单元测试?

这是我当前不起作用的代码:

我收到此错误:

0 投票
3 回答
1645 浏览

jenkins - 在 JenkinsPipelineUnit 中模拟 findFiles

目前我正在尝试注册 findFiles 步骤。我的设置如下:

在 TestJavaApp.groovy 我有:

我的 javaLib.groovy 包含这个当前失败的部分:

我尝试了多个返回各种对象的闭包,但每次我得到 NPE。问题是 - 如何正确注册“findFiles”方法?

注意,我对 groovy 中的模拟和闭包非常陌生。

0 投票
1 回答
1696 浏览

jenkins - 如何使用 JenkinsPipelineUnit 模拟自定义步骤?

我正在使用JenkinsPipelineUnit来测试管道。我定义了一个自定义步骤,如下所示:

并在我的测试中模拟它:

但它会引发异常java.lang.NoClassDefFoundError: javax/servlet/ServletException。我应该如何正确地做到这一点?

0 投票
0 回答
782 浏览

gradle - 在 JenkinsPipelineUnit 测试中生成代码覆盖率

我正在构建一个 jenkins 共享库(在 groovy 中)并使用JenkinsPipelineUnit和 gradle 对其进行测试。运行./gradlew test jacocoTestReport正常,但报告几乎是空的(只是标题);没有覆盖范围。

以下是我的 build.gradle 的相关部分:

我认为问题在于我的“源”文件位于vars目录中,而不是像普通 groovy 项目中预期的那样位于src/groovy中。然而,这是 Jenkins 共享库的要求。

我尝试指定

但随后 gradle 将开始编译这个共享库,而它应该在使用时被加载;这打破了一切......

我的文件夹结构如下所示:

我认为我的问题与https://github.com/jenkinsci/JenkinsPipelineUnit/issues/119有关,但我不知道如何在 gradle 中使用为 maven 提出的更改(甚至不确定它们是否适用于 jacoco)。

0 投票
1 回答
922 浏览

jenkins-pipeline - Jenkins Pipeline 选择特定分支,但取自默认(主)分支

我有一个 Jenkins 流水线,我希望有一个用户输入来检查他们选择的特定分支。即如果我创建一个分支'dev'并在git中提交它,但Jenkins采用默认分支(master)

谁能帮我从'dev'分支代码中获取代码

提前非常感谢。

0 投票
1 回答
1120 浏览

groovy - 如何提取jenkinsfile参数的前3个字符

我需要提取 jenkinsfile 参数的前 3 个字符:

我尝试了以下方法,但这不起作用:

0 投票
0 回答
173 浏览

groovy - 无法使用 CredentialInterceptor 测试 BaselinePipelineTest

我正在尝试在我的 Jenkins 脚本管道中测试一个函数。

从扩展 BasePipelineTest 的 Groovy 单元测试中,我有以下测试方法。

我现在要做的是编写一个断言,该命令按照我的预期执行。既然那是在 withCredentials 的 Closer 中,我该如何验证呢?

我也尝试过使用 withCredentialsInterceptor ,但我似乎无法获得符合预期的语法。如果有人有这样的例子,我将不胜感激。

我真的很难找到文档或示例是如何做到这一点的。