单元测试的最佳方式 集合?
我只是想知道人们如何进行单元测试并断言“预期”集合与“实际”集合相同/相似(顺序并不重要)。
为了执行此断言,我编写了我的简单断言 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(..) 依赖于 equals(..) 来执行检查,但我总是覆盖 Hibernate 域中的 equals(..) 以仅检查业务密钥(这是 Hibernate 网站中所述的最佳做法),而不是该域的所有字段。当然,仅针对业务键进行检查是有意义的,但有时我真的想确保所有字段都是正确的,而不仅仅是业务键(例如,新的数据输入记录)。所以,在这种情况下,我不能搞砸 domain.equals(..),而且似乎我需要实现一些比较器来用于单元测试目的,而不是依赖于collection.containsAll(..)。
有没有一些测试库可以在这里利用?您如何测试您的收藏?
谢谢。