JUnit утверждений: сделать утверждение между поплавками - PullRequest
36 голосов
/ 26 сентября 2011

Мне нужно сравнить два значения: одно - строка, а другое - число с плавающей точкой, поэтому я преобразую строку в число с плавающей точкой, затем пытаюсь вызвать assertEquals(val1,val2), но это не разрешено, я думаю, что assertEquals не принимает значение с плавающей точкойв качестве аргументов.

Каково решение для меня в этом случае?

Ответы [ 2 ]

79 голосов
/ 26 сентября 2011

Вы должны указать дельту для утверждения для чисел с плавающей запятой:

Assert.assertEquals(expected, actual, delta)

Хотя дельта - это максимальная разница (дельта) между ожидаемым и фактическим значением, для которого оба числа по-прежнему считаются равными.

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false
7 голосов
/ 26 августа 2014

Дельта-значение 0.0f также работает, поэтому для старомодного сравнения "==" (используйте с осторожностью!) Вы можете написать

Assert.assertEquals(expected, actual, 0.0f);

вместо

Assert.assertEquals(expected, actual); // Deprecated
Assert.assertTrue(expected == actual); // Not JUnit

Мне нравится, как JUnit гарантирует, что вы действительно подумали о "дельте", которая должна быть только 0,0f в действительно тривиальных случаях.

...