【问题标题】:Spock ignore test if a "setup test" fail如果“设置测试”失败,Spock 忽略测试
【发布时间】:2020-03-20 16:38:37
【问题描述】:

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

伪代码:

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】:

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

    表示规范的特性方法应该按照声明的顺序依次运行(即使存在并行规范运行器),始终从第一个方法开始。如果一个方法失败,其余的方法将被跳过。在超规范和子规范中声明的功能方法不受影响。

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


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

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 2015-04-27
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多