Я пытаюсь создать модульные тесты для библиотеки JenkinsShared, используя Gradle для запуска тестовых задач.
Я следовал этому учебному пособию , в котором по завершении имеется рабочий набор тестов для общей библиотеки для функций в папке 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.Я потратил большую часть своего дня, пытаясь понять, что именно я делаю неправильно, но безрезультатно.
Я был бы очень признателен за любую помощь, чтобы направить меня в правильном направлении.