如何获取 Spock 注解闭包结果

How to get Spock annotation closure result

我想知道如何获取 IgnoreIf spock 注释的布尔值。

例如在我的脚本中我可能有这样的东西:

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

我还有一个自定义的 spock 扩展。在那个扩展中,我有这个:

//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
    }
}

我想为每个包含 IgnoreIf 闭包的特征方法评估 IgnoreIf 闭包。如果我没记错的话,feature.getFeatureMethod().reflection.getAnnotation(IgnoreIf.class).value() 应该给我给定注释中的 clouse,但我不知道如何实际评估闭包内部的 someBooleanMethod 以查看它是真还是假.我该怎么做?

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

这就是我所做的。如果 IgnoreIf 条件为真,它将设置为自行跳过