Не удается импортировать пакет в модульных тестах для общей библиотеки Jenkins - PullRequest
0 голосов
/ 11 октября 2018

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

Я был бы очень признателен за любую помощь, чтобы направить меня в правильном направлении.

1 Ответ

0 голосов
/ 11 октября 2018

Эта библиотека может быть полезна, чтобы ваши общие библиотеки работали в модульном тесте https://github.com/stchar/pipeline-sharedlib-testharness

...