【问题标题】:Execute action every 'when' step Spock执行每个“何时”步骤 Spock 的操作
【发布时间】:2018-05-16 13:16:48
【问题描述】:

我想在每个“何时”步骤 (Spock) 中执行 takeScreen() 操作。如果不在每个“何时”步骤中调用此函数,我怎么能做到这一点。

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

def takeScreen(){
    //code there
}

【问题讨论】:

    标签: java testing groovy spock qa


    【解决方案1】:

    你不能。有什么大不了的?

    顺便说一句,假设您正在使用 Geb + Spock 测试某种 Web 应用程序,以防万一 takeScreen() 用于截屏,您为什么不直接从 GebReportingSpec 导出您的 Geb 测试并使用 @987654324 @ 左右?

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

    【讨论】:

      猜你喜欢
      • 2016-11-04
      • 2016-06-12
      • 2018-10-28
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2021-11-16
      相关资源
      最近更新 更多