В этом случае я не стал бы беспокоиться о насмешках и проверил бы все это (все 3 компаратора) как единое целое.
Я думаю, что тесты могут выглядеть примерно так:
@Test
public void parent_with_smaller_foo_and_equal_bar_is_smaller() {
var parentA = aParent().withFoo("A").withBar("C");
var parentB = aParent().withFoo("B").withBar("C");
assertThat(parentA).isLessThan(parentB);
}
@Test
public void parent_with_equal_foo_and_equal_bar_is_equal() {
var parentA = aParent().withFoo("A").withBar("C");
var parentB = aParent().withFoo("A").withBar("C");
assertThat(parentA).isEqualByComparingTo(parentB);
}
и так далее. Если бы вы написали выше, как:
(A,C)<(B,C)
(A,C)=(A,C)
тогда, похоже, нам понадобится как минимум еще 3 случая, чтобы протестировать все три компаратора:
(B,C)>(A,C)
(A,B)<(A,C)
(A,C)>(A,B)
Я бы оставил SubComparator
и SomeOtherSubComparator
как закрытые для пакета классы и рассматривал бы их как детали реализации SomeParentComparator
.
Имея всего 5 тестовых случаев, я не считаю, что найти причину сбоя - настоящая проблема.