我在规范中有一个方法,其中包含多个块,当-那么
def "some test" () {
given:
...
when:
...
then: // <-- faild
...
when:
...
then:
...
}
如果第一个块何时-然后失败,则第二个块不执行。即使第一个失败,也可以同时执行两者吗?
我在规范中有一个方法,其中包含多个块,当-那么
def "some test" () {
given:
...
when:
...
then: // <-- faild
...
when:
...
then:
...
}
如果第一个块何时-然后失败,则第二个块不执行。即使第一个失败,也可以同时执行两者吗?
这是不可能的,没有意义,因为当一个测试用例中有多个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