我正在写一种集成测试。我需要测试所测试的环境是否正在实际运行。
伪代码:
def "setup test"() {
expect:
service1.isRunning()
service2.isRunning()
}
def "test1"() {
expect:
service1.something() == 1
service2.something() == 2
}
def "test2"() {
// ...
}
基本上,如果“设置测试”失败(甚至肯定也会失败!),我什至都不希望看到“ test1”和“ test2”的结果。我该如何实现?我已经尝试过@IgnoreIf
,但这似乎只是对我们可以从测试之外提供的条件的解决方案。
答案 0 :(得分:1)
您可以尝试使用@Stepwise
注释(在类级别定义)来实现有保证的顺序,并在发生故障时跳过其余测试。当然,副作用是,如果test1
失败,将不会触发test2
,但这是引入顺序和条件执行的最简单方法。
指示规范的功能方法应始终按其声明的顺序(即使在存在并行规范运行器的情况下)顺序运行,始终从第一个方法开始。如果某个方法失败,则将跳过其余方法。在超级规范和子规范中声明的特征方法不受影响。
@Stepwise
对于方法之间具有(逻辑)依赖性的规范很有用。特别是,它有助于避免方法失败后连续出现错误,从而更容易理解真正出了什么问题。
来源:http://spockframework.org/spock/javadoc/1.0/spock/lang/Stepwise.html