Spock忽略测试,如果“设置测试”失败

问题描述 投票:0回答:1

我正在编写一种集成测试。我需要测试所测试的环境是否正在实际运行。

伪代码:

def "setup test"() {
    expect:
    service1.isRunning()
    service2.isRunning()
}

def "test1"() {
    expect:
    service1.something() == 1
    service2.something() == 2
}

def "test2"() {
    // ...
}

[基本上,如果“设置测试”失败,我什至都不希望看到“ test1”和“ test2”的结果(它们肯定也会失败!)。我该如何实现?我已经尝试过@IgnoreIf,但这似乎只是对我们可以从测试之外提供的条件的解决方案。

testing spock
1个回答
0
投票

您可以尝试使用@Stepwise批注(在类级别定义)来实现有保证的顺序,如果发生故障,则跳过其余测试。当然,副作用是,如果@Stepwise失败,则不会触发test1,但这是引入顺序和条件执行的最简单方法。

指示规范的特征方法应按其声明的顺序顺序运行(即使在存在并行规范运行器的情况下),始终从第一个方法开始。如果某个方法失败,则将跳过其余方法。在超级规范和子规范中声明的特征方法不受影响。

test2对于在方法之间具有(逻辑)依赖性的规范很有用。特别是,它有助于避免方法失败后连续出现错误,从而更容易理解真正出了什么问题。


来源:@Stepwise

© www.soinside.com 2019 - 2024. All rights reserved.