Groovy 获取当前方法注释

标签 groovy geb

我为我的注释创建了一个 java 接口(interface)。我现在正在编写一个 geb spock 测试,我想打印注释值,以便它显示在 gradle 报告中。这可能吗?这是我的测试用例,如果我做错了请告诉我

class Checkout extends GebReportingSpec {

    @TestCase(someID="12345")
    def "A checkout 3-D script"() {
        // My test steps.....
    }
}

最佳答案

使用StackTraceUtils.sanitize获取当前方法并使用反射来迭代注释:

import java.lang.annotation.*

import org.codehaus.groovy.runtime.StackTraceUtils

class Checkout {
  @TestCase(someID="12345")
  def "yeah a"() {
    printTestCaseId()
    // My test steps.....
  }

  def printTestCaseId() {
    def stack = StackTraceUtils.sanitize(new Throwable()).stackTrace[1]
    def method = getClass().declaredMethods.find { it.name == stack.methodName }
    println method
    def someID = method.annotations[0].someID()
    println someID
    assert someID == "12345"
  }

}

@Retention (RetentionPolicy.RUNTIME)
@interface TestCase { String someID() }

co = new Checkout()
co."${'yeah a'}"()

如果您是迭代这些方法的人,则不需要 StackTraceUtils

关于Groovy 获取当前方法注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794940/

相关文章:

java - 使用Geb提取Stackoverflow问题计数器

java - 这是在 Geb 中使用 "at"闭包的正确方法吗

database - Groovy 我可以动态地执行一个字符串作为 groovy 命令吗?

grails - 如何在 groovy 域中创建引用关系?

grails - WithNewWindow() 在 Geb 中返回 MultipleCompilationErrorsException

xml - 使用 groovy.xml.MarkupBuilder 语法附加到现有的 groovy.util.Node?

grails - 是否可以将 Groovy Expandos 的集合绑定(bind)到碧 Jade 报告?

maven - 与geb的链接错误

java - 正则表达式检查是否有句子

tomcat - 当我通过 g :form, 提交大量参数时,params 对象中缺少一些参数