无法在Jenkins共享库的单元测试中导入包

时间:2018-10-10 22:50:03

标签: jenkins gradle groovy jenkins-pipeline jenkins-shared-libraries

我正在尝试使用Gradle为JenkinsShared库创建单元测试,以运行测试任务。

我遵循了this教程,该教程在结论上为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

与JenkinsShared库相比,这可能更多是Gradle问题。我刚刚度过了大部分时间,试图准确地弄清楚自己在做错什么,但没有用。

我将非常感谢您为我提供正确的指导。

1 个答案:

答案 0 :(得分:2)

此库可能有助于使共享库在单元测试https://github.com/stchar/pipeline-sharedlib-testharness中起作用