gpt4 book ai didi

grails - Grails:将插件类导入_Events.groovy

转载 作者:行者123 更新时间:2023-12-02 14:03:17 24 4
gpt4 key购买 nike

我创建了一个Grails插件,该插件添加了一个自定义测试类型类(扩展了GrailsTestTypeSupport)和一个自定义测试结果类(扩展了GrailsTestTypeResult),以支持在other脚本的test-app阶段运行的自定义测试类型。在我的本地机器上进行测试已经如虎添翼,但是...

当我打包插件以在我的应用程序中使用时,测试在我们的CI服务器(Jenkins)上进行了。这是 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不在类路径中。

抛开片刻,将插件提供的类放入类路径以进行测试周期开始似乎太疯狂了……我不确定我在哪里绊了。任何帮助或指针将不胜感激。

最佳答案

您是否尝试过通过可通过classLoader中的_Events.groovy变量访问的ClassLoader加载有问题的类?

Class customTestTypeClass = classLoader.loadClass('custom.test.CustomTestType')
// use nice groovy overloading of Class.newInstance
return customTestTypeClass.newInstance(name, relativeSourcePath)

您应该在 eventAllTestsStart的过程中足够迟,以使其生效。

关于grails - Grails:将插件类导入_Events.groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13328510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com