使用Multiple when when然后在代码中阻塞如何处理错误

时间:2016-09-15 09:04:32

标签: groovy spock

我正在使用geb,spock使用groovy,我在功能中使用多个块的功能。但是一个块失败而不是立即退出循环。 例如: -

 def "test"(){
    given:
        println(" checking 3 nos")

    when:
         def a = 5
         def b = 10
         def c = 20
          if (a < b)
            println("Hi, I'm Pass")
    then:
        true

    when:
         def a1 = 5
         def a2 = 10
         def a3 = 20
          if (a2 > a3)
            println("Fail")
    then:
    false

    when:
        def a11 = 5
        def a22 = 10
        def a33 = 20
          if (a33 > a11)
            println("Hello, i'm pass")
    then:
    true

但是在这里它只重新运行Hi,我通过但没有执行第三个块,没有返回第二个块的答案。请指导我。

2 个答案:

答案 0 :(得分:0)

如果你问如何在前一个失败后继续运行每一个,那么答案就是你不能。单个测试方法将在第一次失败时停止。如果您想进行单独的测试,请制作多种方法。

def 'test1'() {
    when:
    ...

    then:
    ...
}

def 'test2'() {
    when:
    ...

    then:
    ...
}

答案 1 :(得分:0)

这是不可能的。将代码拆分为多个测试,并在每个测试中使用/或阻止。

您还可以将一些设置代码移至<br>setupSpec()