Geb/Spock 登录每个 def

Geb/Spock login each def

Geb/Spock 中是否有一种简单的方法来确保在所有功能测试之前进行登录?

例如我的登录测试看起来像

def "login"() {
        when:
            to Login
        and:
            login(username,password)
        then:
            at Dashboard
        where:
            username   | password
            "X"        | "X"
    }

要放入彼此测试的代码相当多。

创建一个抽象基础规范,您所有需要登录的规范都可以扩展:

abstract class LoginBaseSpec extends GebReportingSpec{

  def setupSpec(){
    when:
      to Login

    and:
      login(username, password)

    then:
      at Dashboard  
  }

超级规范中的这个 setupSpec() 方法将在扩展规范中的任何内容之前执行。

将通用登录代码放入基本规范 class setup() 方法中是一种解决方法。

另一个不将您绑定到特定继承结构的方法是使用 JUnit rule which are supported by Spock out of the box.