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