Java 什么';在单元测试中验证集合值的最佳方法是什么?
好的,通常我会有一个方法返回某种类型的集合。单元测试这种方法的问题在于,不能保证对集合的迭代总是以相同的顺序返回项目 是否有人有验证集合的首选方法Java 什么';在单元测试中验证集合值的最佳方法是什么?,java,unit-testing,set,hashset,Java,Unit Testing,Set,Hashset,好的,通常我会有一个方法返回某种类型的集合。单元测试这种方法的问题在于,不能保证对集合的迭代总是以相同的顺序返回项目 是否有人有验证集合的首选方法 彼得两个集合相等,这意味着它们包含相同的项目,如果它们都包含彼此 Assert.assertTrue(s1.containsAll(s2) && s2.containsAll(s1)) 还有只需将期望值放入一个集合,然后在期望值和实际值集合上使用assertEquals。那很有魅力 Set<String> expecte
彼得两个集合相等,这意味着它们包含相同的项目,如果它们都包含彼此
Assert.assertTrue(s1.containsAll(s2) && s2.containsAll(s1))
还有只需将期望值放入一个集合,然后在期望值和实际值集合上使用assertEquals。那很有魅力
Set<String> expected = new HashSet<String>(Arrays.asList("expected", "items"));
...
Set<String> actual = ...;
Assert.assertEquals(expected, actual);
Set expected=newhashset(Arrays.asList(“expected”、“items”);
...
设置实际值=。。。;
Assert.assertEquals(预期、实际);
嘿,是的。我不知道你能做到。来自Java6抽象集javadocs:将指定对象与此集合进行相等性比较。如果给定对象也是一个集合,两个集合的大小相同,并且给定集合的每个成员都包含在此集合中,则返回true。这确保equals方法在Set接口的不同实现中正常工作。这个实现首先检查指定的对象是否是这个集合;如果是,则返回true。然后,它检查指定对象是否是大小与该集合大小相同的集合;如果不是,则返回false。如果是,则返回containsAll((Collection)o)。containsAll使用contains,contains使用.equals方法。对于简单的POJO集合,或者任何有一个好的.equals方法的集合,这都是非常漂亮的。谢谢