Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';在单元测试中验证集合值的最佳方法是什么?_Java_Unit Testing_Set_Hashset - Fatal编程技术网

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方法的集合,这都是非常漂亮的。谢谢