Spock - 近似比较

Spock - approximate comparisions

我一直在寻找 JUnit 中与以下便捷方法等效的 Spock,您可以借此进行“近似”比较。有谁知道这样的事情是否存在?

/**
 * Asserts that two doubles or floats are equal to within a positive delta.
 */
assertEquals(double expected, double actual, double delta) 

我不知道是否有 Spock 等价物,但很容易编写自己的

class Foo extends Specification {

  private boolean compareApproximately(Number expected, Number actual, Number delta) {
    Math.abs(expected - actual) <= delta
  }

  def "approximate test"() {
    expect:
    compareApproximately(4, 4.5, 1)
    !compareApproximately(4, 4.5, 0.1)
  }
}

实际上,您可能希望通过在特征、Specification 的子 class 或实用程序中的静态方法中定义 compareApproximately 来跨规范重用它class.

official docs:

中描述了内置函数
when:
def x = computeValue()

then:
expect x, closeTo(42, 0.01)

检查specs