Grails 斯波克近似比较

Grails 斯波克近似比较,grails,junit,spock,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) 我不知道是否有一个斯波克等效,但它很容易写自己的 class Foo extends

我一直在寻找与JUnit中的以下方便方法类似的Spock方法,通过该方法可以进行“近似”比较。有人知道这样的事情是否存在吗

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

我不知道是否有一个斯波克等效,但它很容易写自己的

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)
  }
}
class Foo扩展了规范{
私有布尔比较近似值(预期数、实际数、增量数){

Math.abs(预期-实际)有内置函数,如中所述:


查看。

您可能需要使用Hamcrest matchers。这更具体地回答了问题。感谢@Michal_SzulcSee还提供了提到Hamcrest支持和的Spock发行说明。
when:
def x = computeValue()

then:
expect x, closeTo(42, 0.01)