我正在尝试使用 Gradle 为 JenkinsShared 库创建单元测试,以便运行测试任务。
我已经按照本教程进行操作,得出结论,其中一个用于文件夹内函数的共享库的工作测试套件vars
(单元测试在 中src/test/groovy/*Test.groovy
)。
然而,在我们内部共享的 jenkins 库中,我们遵循了一种更加面向对象的风格,并将功能隔离到一个类包中,格式如下:src/org/company/*.groovy
.
尝试将所述包导入单元测试类时会出现问题。在本教程中,函数是使用loadScript
加载依赖于另一个文件的类时该方法失败的方法导入的。
上课:
package tests
import org.junit.*
import com.lesfurets.jenkins.unit.*
import static groovy.test.GroovyAssert.*
import org.company.UtilFactory
class UtilFactoryTest extends BasePipelineTest {
@Test
void testCall() {
def util = UtilFactory.getUtil("hello")
assertEquals true, true
}
}
src/org/company/UtilFactory.groovy
package org.company
class UtilFactory implements Serializable {
static Util instance
static Util getUtil(script=null) {
if (!(UtilFactory.instance)) {
if (!script) {
// Throws an exception if on the first call to getUtil the
// script parameter is null.
throw new ScriptUndefinedException("script parameter null on initial call to getUtil")
}
UtilFactory.instance = new Util(script)
}
return UtilFactory.instance
}
}
class ScriptUndefinedException extends Exception {
// Parameterless Constructor
public ScriptUndefinedException() {}
// Constructor that accepts a message
public ScriptUndefinedException(String message)
{
super(message);
}
}
这给了我一个例外:
jenkins-utilities/src/test/groovy/UtilFactoryTest.groovy: 7:
unable to resolve class org.company.UtilFactory
@ line 7, column 1.
import org.company.UtilFactory
这可能更像是一个 Gradle 问题,而不是 JenkinsShared 库。我刚刚花了我一天的大部分时间试图弄清楚我做错了什么,但无济于事。
我真的很感激任何帮助引导我朝着正确的方向前进。