一次运行所有块,即使一次失败

我在规范中有一个方法,其中包含多个块,当-那么

def "some test" () {
    given:
    ...

    when: 
    ...
    then: // <-- faild
    ...

    when:
    ...
    then:
    ...
}

如果第一个块何时-然后失败,则第二个块不执行。即使第一个失败,也可以同时执行两者吗?

kaseno 回答:一次运行所有块,即使一次失败

这是不可能的,没有意义,因为当一个测试用例中有多个when时,它们之间就存在某种关系,而第二个when的成功则取决于需要第一个when以及使整个测试用例失败的行为。

如果您不假定这种关系,则将其分为两个或多个单独的测试用例:

void 'some test'() {
    given:
    ...
    when: 
    ...
    then:
    ...
}

void 'another test'()
    given:
    ...
    when: 'second when from some test'
    ...
    then: 'second then from some test'
    ...
}

如果您有多个when + then来共享given部分,则可以进行全局设置:

class MySpec extends Specification {    
    setup() {
        // code from the given section
    }

    void 'some test'() {
        ...
    }

    void 'another test'() {
        ...
    }
}

或者您可以创建共享的方法,该方法将在所有测试用例中在需要时调用。

如果您的多个when块仅在使用的值上有所不同,请考虑使用where块。请参阅文档:http://spockframework.org/spock/docs/1.3/data_driven_testing.html#data-tables

本文链接:https://www.f2er.com/3139177.html

大家都在问