Spock测试失败时执行一些操作

amo*_*fis 8 testing spock

我想在Spock测试失败时执行一些操作.具体来说,截取屏幕截图.可能吗?怎么做?

Tom*_*rko 10

创建一个监听器类

class ExampleListener extends AbstractRunListener {

  def void error(ErrorInfo error) {
    println "Actual on error logic"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后使用IGlobalExtension针对每个Spec执行的实现将其添加到每个规范

class GlobalSpecExtension implements IGlobalExtension {

  @Override
  void visitSpec(SpecInfo specInfo) {
    specInfo.addListener(new ExampleListener())
  }
}
Run Code Online (Sandbox Code Playgroud)

最后创建org.spockframework.runtime.extension.IGlobalExtension在你的名字中命名的文件META-INF/services directory(通常在src/test/resources你使用Maven的情况下它将在你的IGlobalExtension实现的全名下),例如

com.example.tests.GlobalSpecExtension
Run Code Online (Sandbox Code Playgroud)