为什么两个独立的测试依赖于 Spock?

Why two separate tests are dependent in Spock?

我有两个完全独立的测试来验证两个不同的构建器(尽可能简化)。第二个失败了,但没有理由这样做。为什么会这样?

def "first"() {
    StringBuilder builder

    expect: true
}

def "second"() {
    expect: true

    where:
    builder << [new ProcessBuilder()]
}

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'java.lang.ProcessBuilder@186f8716' with class 'java.lang.ProcessBuilder' to class 'java.lang.StringBuilder'

这个问题实际上是 that one 的重复问题。

底线:你在 Spock 中遇到了 bug #880,大约一周前已经解决了,你可能会在最终版本 Spock 2.0 或下一个里程碑版本中享受修复,如果有的话在最后一个之前还有一个。

解决方法:将第二个变量重命名为其他名称。

该问题的技术背景及同时修复的相关问题可以在相应的pull request #1111.

中找到