Использование Hamcrest closeTo с плавающей запятойJAVA

Программисты JAVA общаются здесь
Anonymous
Использование Hamcrest closeTo с плавающей запятой

Сообщение Anonymous »

У меня есть модульный тест, который я пытаюсь выполнить

Код: Выделить всё

assertThat(foo, hasProperty("bar", hasProperty("qua", is(closeTo(17.0f, 1e-5)))));
То есть у меня есть foo, и я хочу убедиться, что foo.getBar().getQuz() примерно равен 17. Объявлено, что closeTo принимает двойное значение или BigDecimal
Когда я запускаю тест, он кажется неудачным, потому что getQuz возвращает число с плавающей запятой и (по крайней мере, для Hamcrest) 17.0f и 17.0 (двойное значение) — это разные типы и не могут быть closeTo.

Код: Выделить всё

is a numeric value within  of ) property "quz" was a java.lang.Float ()]
Есть ли способ заставить это работать?
Я знаю, что могу написать AssertThat(foo.getBar().getQuz(), is(closeTo(17.0, 1e-5)), а затем привести его к работе, но на самом деле запрос сложнее:

Код: Выделить всё

assertThat(..., hasItem(hasProperty(..., allOff(hasProperty(...),
hasProperty(...),
hasProperty(...)))))
поэтому я утверждаю, что в списке есть один элемент, в котором вложенное свойство имеет три разных свойства с указанными значениями. Написание этого будет сложной частью кода и, вероятно, не даст мне такого приятного сообщения об ошибке в случае неудачного теста.

Подробнее здесь: https://stackoverflow.com/questions/798 ... th-a-float

Вернуться в «JAVA»