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

时间:2020-03-20 16:38:37

标签: testing spock

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

伪代码:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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


来源:http://spockframework.org/spock/javadoc/1.0/spock/lang/Stepwise.html