是否可能?如果是,它将对调试有很大帮助。
更新: 对于元数据,我的意思是给出| when | then语句之后的内容,例如:
def "test case"...
given:"some preconditions"
when:"do something"
then:"some result"
...
我希望打印内容:
"test case" begins
"some preconditions"
"do something"
"some result"
答案 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