是否有可能在评估功能的清除块之前拦截Spock功能的执行?

问题描述 投票:0回答:1

自定义Spock注释是否可以在执行每个cleanup块之前拦截某个功能的执行?我意识到我可以在执行规范的cleanup()方法之前进行拦截,但是我希望在cleanup块的内容运行之前就对其进行拦截。

例如:

class Extension extends AbstractAnnotationDrivenExtension<Extension>{

  @Override
  void visitSpec(SpecInfo s){
    s.addCleanupInterceptor(new Inter())
  }

}
class Inter implements IMethodInterceptor{

  @Override
  void intercept(IMethodInvocation inv){
    println inv.getMethod().getKind()
    inv.proceed()
  }

}
@CatchErrors
class SampleTest extends Specification {

  def "A sample feature"(){
    when:
    foo()

    then:
    false 

    cleanup:
    println "In cleanup block"
    bar()

  }
}

哪个输出:In cleanup block \n CLEANUP

[在上面的示例中,我想在执行最后一个cleanup块之前进行拦截。我在addCleanupInterceptor时尝试通过visitSpec()注册拦截器,但无济于事。在功能的所有块都执行完之后,而不是在bar()运行之前,我似乎没有碰到这个拦截器。

groovy spock
1个回答
0
投票

答案为否。之前在Spock issue #538中已要求执行此操作,但尚未实现。即使在门前安装了Spock 2.0(基于JUnit 5 Jupiter并与Groovy 3兼容)(里程碑2版本已经发布了一段时间),似乎也未计划发布此功能。

© www.soinside.com 2019 - 2024. All rights reserved.