Подтвердить что ты не робот

Утверждения JUnit: сделать утверждение между поплавками

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

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

4b9b3361

Ответ 1

Вы должны указать delta для утверждения для Floats:

Assert.assertEquals(expected, actual, delta)

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

Assert.assertEquals(0.0012f, 0.0014f, 0.0002); // true
Assert.assertEquals(0.0012f, 0.0014f, 0.0001); //false

Ответ 2

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

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

вместо

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

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