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
メソッドを繰り返し使用する場合は、 は必要ありません。