Использование 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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