当specs运行时,如何打印出spock元数据(给定| when | then)的内容?

时间:2017-02-09 06:46:02

标签: printing metadata spock

是否可能?如果是,它将对调试有很大帮助。

更新: 对于元数据,我的意思是给出| when | then语句之后的内容,例如:

def "test case"...
given:"some preconditions"
when:"do something"
then:"some result"
...

我希望打印内容:

"test case" begins
"some preconditions"
"do something"
"some result"

1 个答案:

答案 0 :(得分:2)

目前这是不可能的,因为即使您编写了Spock扩展,目前最深入的是功能方法执行。即您可以做的是在执行方法之前或之后打印所有块标签,但在方法执行期间不会穿插您自己的日志输出。目前方法内块执行没有钩子或拦截点。

另请参阅这些功能请求(遗憾的是仍未得到答复):

记录块标签的可能性是将HTML测试报告编写为测试文档。但这是一个报告的事情,而不是在运行测试期间可以使用的东西。

更新:同时稍微解决一下。将它放在您的全局Spock配置脚本中(通常为src/test/resources/SpockConfig.groovy

import spock.lang.Specification

class LabelPrinter {
  def _(def message) {
    println message
    true
  }
}

Specification.mixin LabelPrinter

然后在Spock或Geb测试中使用它(请注意标签后面的下划线):

package de.scrum_master.testing

import spock.lang.Specification

class MySpockTest extends Specification {
  def "interaction"() {
    given:_ "My given comment"
    def foo = 11
    def bar = foo + 4
    println "blah"

    expect:_ "My expect comment"
    interaction {
      foo = 2
      bar = 5
      true
    }
    println "foo"
    foo * bar == 10
    foo + bar == 7

    and:_ "My and comment"
    true
  }
}

控制台日志:

My given comment
blah
My expect comment
foo
My and comment