运行 所有块 when-then,即使一个失败
Run all blocks when-then, even if one fail
我在规范中有多个块的方法 when-then
def "some test" () {
given:
...
when:
...
then: // <-- faild
...
when:
...
then:
...
}
如果第一个块 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
我在规范中有多个块的方法 when-then
def "some test" () {
given:
...
when:
...
then: // <-- faild
...
when:
...
then:
...
}
如果第一个块 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