unit-testing - 运行所有块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
推荐阅读
- java - Selenium 表示元素单击“成功”,但实际上并未单击
- c# - 我想要任务详细信息以及它的功能 ID 和 vsts 中的一个查询的评论
- process - 有没有办法将同一进程的不同实例分配给不同的 camunda 实例(工作站)?
- microsoft-graph-api - 无法将新文件 (<4MB) 上传到 SharePoint (ms graph api)
- forms - 单击列表视图项 Xamarin 表单时我无法调用命令
- sql - 为什么选择不同存储的'As T'以及如何别名?
- javascript - 当应用程序在后台运行时反应本机电源按钮长按监听器
- python - 在 Python 中使用给定的 P50 和 STD 计算 P75/P90 值
- docker - docker build 输出的目的是什么?
- corda - 如何在 R3 Corda 的账户之间转移不可替代的代币?