Используйте isEqualByComparingTo в предикате - PullRequest
0 голосов
/ 05 июля 2018

нормальное использование хороших assertj-сопоставлений, таких как isEqualByComparingTo:

BigDecimal number = ...
assertThat(number).isEqualByComparingTo(BigDecimal.valueOf(...));

однако у меня есть список BigDecimals и я хочу проверить каждый элемент в списке на равенство, используя сопоставления assertj, такие как isEqualByComparingTo:

List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( ???.isEqualByComparingTo(BigDecimal.valueOf(...) )

вместо этого я должен использовать утомительные сравнения низкого уровня:

List<BigDecimal> numbers = ...
assertThat(numbers).allMatch( number -> number.compareTo(...) == 0 )

Возможно ли как-то использовать хорошие совпадения внутри предиката?

1 Ответ

0 голосов
/ 07 июля 2018

Попробуйте usingElementComparator с BigDecimalComparator (или напишите свой собственный BigDecimalComparator).

Пример:

List<BigDecimal> numbers = list(new BigDecimal("1.00"), new BigDecimal("2.00"));

assertThat(numbers).usingElementComparator(new BigDecimalComparator())
                   .contains(new BigDecimal("1.0"), new BigDecimal("2"));
...