Не удается импортировать пакет в модульных тестах для общей библиотеки Jenkins
Я пытаюсь создать модульные тесты для библиотеки 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
}
}
ЦСИ / орг / компания /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. Я провел большую часть своего дня, пытаясь понять, что именно я делаю неправильно, но безрезультатно.
Я был бы очень признателен за любую помощь, чтобы направить меня в правильном направлении.
1 ответ
Эта библиотека может быть полезна для того, чтобы ваши общие библиотеки работали в модульном тесте https://github.com/stchar/pipeline-sharedlib-testharness