Spock 的@Unroll 与@Stepwise

Spock's @Unroll vs. @Stepwise

假设我有一个 Specification,里面有一个 @Unroll 测试

class MySpec extends Specification {

  @Unroll
  def "some test, executed n times, with n>1"() {
    // when, then, where
  }
}

注释MySpec执行@Stepwise会不会多余?这被视为一个测试(连续执行 n 次)还是 n 个测试(并行执行)?

@Stepwise确保所有测试方法运行按照源文件中显示的顺序。

@Unroll 对于参数化测试很有用,因为它强制将单个测试方法中的所有测试场景报告为单个测试 运行s。

所以在你的情况下 @Stepwise 是多余的,所有 unrolled 测试都按照 where 子句中指定的顺序执行。

通常在 Spock 1.x 中,所有测试都在 中执行,甚至那些从 where 子句展开的测试。 Spock 2.0 计划并行化 - 正如您在此处看到的 https://github.com/spockframework/spock/issues/157