Grails:将插件类导入到 _Events.groovy

2024-01-06

我创建了一个 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不在类路径上。

暂时搁置一下,将插件提供的类放入类路径以开始测试周期似乎很疯狂……我不太确定我在哪里被绊倒了。任何帮助或指示将不胜感激。


您是否尝试过通过可通过以下方式访问的 ClassLoader 简单地加载相关类classLoader变量在_Events.groovy?

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

您应该在这个过程中迟到eventAllTestsStart为使其有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails:将插件类导入到 _Events.groovy 的相关文章

  • groovy中bigdecimal的默认比例

    groovy 中 BigDecimal 的默认小数位数是多少 和四舍五入 因此 当尝试进行计算时 def x 10 0 30 0 0 3333333333 def y 20 0 30 0 0 6666666667 基于此 我可以假设它使用比
  • 在 System Groovy 中暂时禁用 Jenkins 服务器上的 SCM 轮询

    我们有一个 Jenkins 服务器 正在运行 20 到 30 个作业 由于构建过程相当复杂 我们将实际构建分解为 1 个子构建 其中一些可以同时运行 其他则必须遵循之前的构建步骤 因此 我们将每个构建步骤分为 3 组 这三组在构建进行时会被
  • Grails transactionManager 运行时出现异常

    当编译一个grails v2 3 3项目运行项目时出现以下错误Netbeans 7 4 Loading Grails 2 3 3 Configuring classpath Configuring classpath Environment
  • 反思 Groovy 脚本中声明的函数

    有没有一种方法可以获取 Groovy 脚本中声明的函数的反射数据 该脚本已通过GroovyShell目的 具体来说 我想枚举脚本中的函数并访问附加到它们的注释 Put this到 Groovy 脚本的最后一行 它将作为脚本的返回值 a la
  • Java 环境变量设置正确,但 java 找不到 jar

    Summary Java 环境变量设置正确 从 echoing 可以看出 但是 仅当明确包含在 javac 命令中时才能看到 jar Details 这与图形和OpenGl没有具体关系 肯定问题与类路径有关 即第三方的导入jar files
  • 告诉 GORM 不要保留属性

    有没有办法告诉 GORM 不要保留某个属性 我计划在我的 User 类上定义一个确认密码属性 我将使用它进行验证 但不应保留 使用瞬态关键字 GORM 可以指示不保留特定属性 以下代码片段显示了瞬态属性的使用 class Book stat
  • 无法使用 -cp 和 jar 位置通过 Java ProcessBuilder 查找或加载类

    我正在尝试使用ProcessBuilder在我的系统中启动 JUnit 测试Java应用 我可以毫无问题地从命令行运行相同的命令 从 ProcessBuilder 运行时是否需要使用 jar 的绝对路径 还是可以使用相对路径 在命令行上运行
  • UrlMapping 和文件扩展名

    我有以下 url 映射 name a a file controller attachment action get 我想像这样使用它
  • 在 Grails 中创建一个新的资源包?

    我想创建另一个资源包来组织我的 Grails 应用程序 Grails 提供了一个 messages 资源包 我需要创建一个 myApp 资源包 如何创建新的资源包并使用 g message GSP 标记读取其属性 你必须创建一个beangr
  • 如何使用类路径位置

    为了解决这个问题 我到处寻找 但找不到解决方案 问题如下 我在 Tomcat 7 服务器上构建了一个 Spring mvc web 应用程序 准确地说是 7 0 12 并且我在获取
  • 如何在GEB中选择内部元素的文本?

    我有以下场景 div ul class select2 results style width 400px li class select2 results dept 0 select2 result select2 result sele
  • 如何检测 URL 映射中的片段标识符?

    In a Grails http www grails org 项目我正在尝试根据是否存在来映射 Url片段标识符 http en wikipedia org wiki Fragment identifier 片段标识符不是 URL 的一部
  • 或者在 Grails 2.3.8 的namedQueries 中:AbstractMethodError

    从 Grails 2 2 4 升级到 2 3 8 后 我得到 java lang AbstractMethodError grails orm HibernateCriteriaBuilder or Lgroovy lang Closure
  • 在 Grails 中使用 Spring-Security 前/后注释

    我正在使用 Grails Spring Security 插件 Spring Security Core 1 0 1 它又使用 spring security 3 0 2 RELEASE 开发 Grails 版本 1 3 3 Web 应用程
  • 如何生成源文件并用gradle编译

    我有一个类似于以下内容的 gradle 构建脚本 apply plugin war task genSources lt lt here I generate some java files making sure that source
  • 从 Grails 控制器渲染视频内容

    毫无疑问又是一个愚蠢的新手问题 我在 Grails 控制器中有一个字节数组 其中包含视频文件 确切地说是 mp4 文件 的内容 我熟悉如何从 grails 控制器渲染 JSON XML 和其他基本类型 但我找不到任何显示如何输出视频的示例
  • Grails:SpringSecurity 角色层次结构未按预期工作

    我正在 Grails 2 0 1 中使用 springsecurity 插件 我的角色层次结构和其他 s2 属性如下所示 grails plugins springsecurity userLookup userDomainClassNam
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 访问 PUT 或 POST 请求的原始正文

    我正在 Grails 中实现 RESTful API 并使用自定义身份验证方案 该方案涉及对请求正文进行签名 以类似于 Amazon 的 S3 身份验证方案的方式 因此 为了验证请求 我需要访问原始 POST 或 PUT 正文内容来计算和验
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA

随机推荐