2017-10-19 1 views
0

IgnoreIf spockアノテーションのブール値をどのように取得できるのでしょうか。Spock annotation closureの結果を得るには

@IgnoreIf({someBooleanMethod()}) 
def "Some Feature Method"(){ 
    // code and stuff 
} 

は、私は、カスタムスポックの拡張子を持っている:

は私のスクリプトの例では、私はこのようなものであってもよいです。私はIgnoreIfの閉鎖が含まれている各機能方法についてIgnoreIfクロージャを評価したい

//iterates over each feature method in a spec 
for (FeatureInfo feature : spec.getFeatures()){ 
    if(feature.getFeatureMethod().reflection.isAnnotationPresent(IgnoreIf.class)&&feature.getFeatureMethod().reflection.getAnnotation(IgnoreIf.class).value()){ 
     //some more code goes here 
    } 
} 

:その拡張子では、私はこれを持っています。私が間違っていない場合、feature.getFeatureMethod().reflection.getAnnotation(IgnoreIf.class).value()は私に与えられた注釈からClouseを与えるべきですが、私は実際にどのように評価するのかわかりませんsomeBooleanMethod私はそれが真か偽かを見るために閉鎖の内部を持っています。それ、どうやったら出来るの?

+0

拡張機能のコードを見てください。org.spockframework.runtime.extension.builtin.IgnoreIfExtension –

+0

@LeonardBrünings私はあなたが 'evaluateCondition 'メソッドが見つかりました。それは非静的メソッドなので、そのメソッドを呼び出すことができるようにそのオブジェクトのインスタンスを取得する方法です – switch201

答えて

0

new IgnoreIfExtension().visitFeatureAnnotation(feature.getFeatureMethod().reflection.getAnnotation(IgnoreIf.class), feature)

これは私がやったことです。 IgnoreIf条件が真である場合、それはそれ自身をスキップするように設定されます

関連する問題