java - 每 'when' 步执行 Action Spock

标签 java testing groovy spock

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

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

def takeScreen(){
    //code there
}

最佳答案

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

顺便说一句,假设您正在使用 Geb + Spock 来测试某种网络应用程序,以防万一 takeScreen() 是为了截取屏幕截图,为什么不直接从中获取 Geb 测试呢? GebReportingSpec 并使用 report "After login" 左右?

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

关于java - 每 'when' 步执行 Action Spock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372021/

相关文章:

node.js - Npm 测试找不到 socket.io.js 文件

authentication - 成功验证后,Grails Spring Security会强制用户进入特定屏幕

android - Gradle中没有此类属性错误

java - 为什么需要使用 'this' 关键字?

php - mock :模拟 publicaly 重写 protected 方法

android - 没有已发布应用的 Google Play Beta 测试?

bash - 使用不同的输入文件运行脚本

java - 如何在 HttpClient 的请求中添加、设置和获取 Header?

java - 在 Android 应用程序中使用 Google map 路线

java - 运行本地 Apache、Java 和 PHP 本地服务器的不同方法?