Spock-近似比较

时间:2018-11-22 14:19:10

标签: grails junit spock

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

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

2 个答案:

答案 0 :(得分:6)

有内置功能,如official docs中所述:

when:
def x = computeValue()

then:
expect x, closeTo(42, 0.01)

检查specs

答案 1 :(得分:1)

我不知道有没有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)
  }
}

在实践中,您可能希望通过在特征,compareApproximately的子类或实用程序类中的静态方法中定义Specification在规范之间可重用。