Давайте предположим, что у меня есть класс Foo
, который не реализует Comparable
, и класс FooComparator
, который реализует Comparator<Foo>
.
Использование языка AssertJAPI, я бы сейчас предположил, что я мог бы сделать что-то вроде этого:
Foo foo1 = ...;
Foo foo2 = ...;
FooComparator fooComparator = ...;
assertThat(foo1).usingComparator(fooComparator).isGreaterThan(foo2);
Поскольку Foo
не реализует Comparable, assertThat(foo1)
вернет тип ObjectAssert<Foo>
и, поскольку usingComparator
также возвращаетObjectAssert<Foo>
, у меня нет доступа к методам isGreaterThan
и isLessThan
, которые объявлены в интерфейсе ComparableAssert
.
Существует ли причина, по которой ObjectAssert<Foo>.usingComparator
'only' возвращает ObjectAssert<Foo>
а не ComparableAssert<Foo>
?
Конечно, я могу переписать вышеупомянутое утверждение чем-то вроде assertThat(fooComparator.compare(foo1, foo2)).isGreaterThan(0)
, но само выражение не особенно читаемо, и в случае сбоев генерируется сообщение ( 'Ожидается: <-1> больше, чем: <0>' ) не упоминает фактические данные в foo1 и foo2, вызывающие сбой подтверждения.
Есть ли способ бегловыразить это условие с помощью встроенного API AssertJ без необходимости реализацииСобственные расширения или обертки?