每个'当'步骤Spock执行操作

时间:2018-05-16 13:16:49

标签: java testing groovy spock qa

我想在每个'什么时候'步骤(Spock)做一些动作takeScreen()。如果不在每个“何时”步骤调用此函数,我该怎么做呢。

 def "doSomeAction"() {
    when:
    doSmth()
    takeScreen()
    then:
    at SomePage
    when:
    doAction()
    takeScreen()
    then:
    at SomePage
}

def takeScreen(){
    //code there
}

1 个答案:

答案 0 :(得分:0)

你做不到。有什么大不了的?

顺便说一句,假设你使用Geb + Spock来测试某种类型的Web应用程序,以防takeScreen()用于截取屏幕截图,为什么不从GebReportingSpec派生你的Geb测试并使用report "After login"左右?

更新:解决方法是在您的类中添加一个小帮助方法,或者只为全局Spock配置添加一个帮助方法,并在when:then:之后调用它。有关如何执行此操作的详细信息,请参阅我的answer here。除了(或除了)打印标签之外,您可以执行takeScreen()应该执行的任何操作,或者只是从那里调用它。如果你想在when:的开头想要它,请确保调用方法如when:_ "bla",如果你想在最后一样,你可以在随后的{{1}中调用它像then:一样。但我不认为你应该这样做,在你的情况下它只是信息隐藏。测试应该准确显示它的作用。在我的项目中,开发人员自己多次在辅助方法中遇到问题,尤其是在Geb中,为了失败的测试而截取主题的原因并且过于复杂而无法解释。