2

注釈用の Java インターフェイスを作成しました。私は現在、geb spock テストを作成しています。注釈値を出力して、gradle レポートに表示したいと考えています。これは可能ですか?これが私のテストケースです。これが間違っているかどうか教えてください

class Checkout extends GebReportingSpec {

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

2 に答える 2

2

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

于 2013-04-03T19:12:23.040 に答える