Eqb*_*bal 96 java collections junit unit-testing
你会如何简洁地断言Collection元素的相等性,特别是Set在JUnit 4中?
Bil*_*ard 99
您可以断言两个Sets彼此相等,从而调用该Set equals()方法.
public class SimpleTest {
private Set<String> setA;
private Set<String> setB;
@Before
public void setUp() {
setA = new HashSet<String>();
setA.add("Testing...");
setB = new HashSet<String>();
setB.add("Testing...");
}
@Test
public void testEqualSets() {
assertEquals( setA, setB );
}
}
Run Code Online (Sandbox Code Playgroud)
此@Test如果两个将传递Sets为相同的大小和包含相同的元素.
Mat*_*man 43
阿帕奇再次宣传救援.
assertTrue(CollectionUtils.isEqualCollection(coll1, coll2));
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.我不知道为什么,但我发现对于集合,以下assertEquals(coll1, coll2)并不总是有效.在我失败的情况下,我有两个由Sets支持的集合.即使我确定他们是肯定的,所以无论是汉克雷斯特还是君子都不会说收藏品是平等的.使用CollectionUtils它完美地工作.
dfa*_*dfa 15
与hamcrest:
assertThat(s1, is(s2));
Run Code Online (Sandbox Code Playgroud)
明确断言:
assertEquals(s1, s2);
Run Code Online (Sandbox Code Playgroud)
注意:使用具体集合类的equals()方法
小智 7
比较一个特别有趣的案例
java.util.Arrays$ArrayList<[[name,value,type], [name1,value1,type1]]>
Run Code Online (Sandbox Code Playgroud)
和
java.util.Collections$UnmodifiableCollection<[[name,value,type], [name1,value1,type1]]>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我看到的唯一解决方案是将它们都变成集合
assertEquals(new HashSet<CustomAttribute>(customAttributes), new HashSet<CustomAttribute>(result.getCustomAttributes()));
Run Code Online (Sandbox Code Playgroud)
或者我可以逐个元素地比较它们.