Мне просто интересно, как люди тестируют модуль и утверждают, что «ожидаемая» коллекция такая же / похожа на «фактическую» коллекцию (порядок не важен).
Чтобы выполнить это утверждение, я написал свой простой API утверждения: -
public void assertCollection(Collection<?> expectedCollection, Collection<?> actualCollection) {
assertNotNull(expectedCollection);
assertNotNull(actualCollection);
assertEquals(expectedCollection.size(), actualCollection.size());
assertTrue(expectedCollection.containsAll(actualCollection));
assertTrue(actualCollection.containsAll(expectedCollection));
}
Ну, это работает. Это довольно просто, если я утверждаю только кучу целых чисел или строк. Также может быть довольно больно, если я пытаюсь утвердить коллекцию доменов Hibernate, скажем, например. Для выполнения проверки collection.containsAll (..) полагается на равенства (..), но я всегда переопределяю равенства (..) в моих доменах Hibernate, чтобы проверять только бизнес-ключи (что является наилучшей практикой, указанной в Hibernate) и не все поля этого домена. Конечно, имеет смысл сверяться только с бизнес-ключами, но бывают случаи, когда я действительно хочу убедиться, что все поля верны, а не только бизнес-ключи (например, новая запись ввода данных). Таким образом, в этом случае я не могу возиться с domain.equals (..), и кажется, что мне нужно реализовать некоторые компараторы для целей только модульного тестирования, а не полагаться на collection.containsAll (..).
Есть ли какие-нибудь библиотеки тестирования, которые я мог бы использовать здесь? Как вы тестируете свою коллекцию?
Спасибо.