我创建了一个 Grails 插件,它添加了一个自定义测试类型类(扩展GrailsTestTypeSupport
)和自定义测试结果类(扩展GrailsTestTypeResult
),以支持我在脚本other
阶段运行的自定义测试类型。test-app
在我的本地机器上测试这个已经很顺利了,但是......
当我打包插件以在我的应用程序中使用时,测试在我们的 CI 服务器 (Jenkins) 上爆炸了。这是詹金斯吐出的错误:
unable to resolve class CustomTestResult @ line 58, column 9.
new CustomTestResult(tests.size() - failed, failed)
看来我不能简单地import
将这些类放入_Events.groovy
中,并且这些类不在类路径中。但如果我能弄清楚如何让它们进入类路径,我会被诅咒的。这是我到目前为止所拥有的(在_Events.groovy
):
import java.lang.reflect.Constructor
eventAllTestsStart = {
if (!otherTests) otherTests = []
loadCustomTestResult()
otherTests << createCustomTestType()
}
private def createCustomTestType(String name = 'js', String relativeSourcePath = 'js') {
ClassLoader parent = getClass().getClassLoader()
GroovyClassLoader loader = new GroovyClassLoader(parent)
Class customTestTypeClass = loader.parseClass(new File("${customTestPluginDir}/src/groovy/custom/test/CustomTestType.groovy"))
Constructor customTestTypeConstructor = customTestTypeClass.getConstructor(String, String)
def customTestType = customTestTypeConstructor.newInstance(name, relativeSourcePath)
customTestType
}
private def loadCustomTestResult() {
ClassLoader parent = getClass().getClassLoader()
GroovyClassLoader loader = new GroovyClassLoader(parent)
Class customTestResultClass = loader.parseClass(new File("${customTestPluginDir}/src/groovy/custom/test/CustomTestResult.groovy"))
}
当前:CustomTestResult
仅从内部引用CustomTestType
。据我所知,_Events.groovy
正在加载CustomTestType
,但它失败了,因为它坚持认为CustomTestResult
它不在类路径上。
暂时搁置一下,将插件提供的类放到类路径中以开始测试周期的开销如此之大似乎很疯狂……我不太确定我在哪里被绊倒了。任何帮助或指示将不胜感激。