Спок - приблизительные сравнения - PullRequest
0 голосов
/ 22 ноября 2018

Я искал эквивалент Спока следующего удобного метода в JUnit, с помощью которого вы можете делать «приблизительные» сравнения.Кто-нибудь знает, существует ли такая вещь?

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

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Для этого есть встроенная функция, описанная в официальных документах :

when:
def x = computeValue()

then:
expect x, closeTo(42, 0.01)

Проверьте спецификации .

0 голосов
/ 22 ноября 2018

Я не знаю, есть ли эквивалент Спока, но легко написать свой собственный

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 повторно используемым для всех спецификаций, определив его вtrait, подкласс Specification или статический метод в служебном классе.

...