java – JUnit:使用参数化类型 – 数组断言集合的相等性
发布时间:2020-12-15 04:10:45 所属栏目:Java 来源:网络整理
导读:我试图断言以下集合的平等: String[] arr1= new String[] { "1","2","3" };CollectionString[] coll1= Arrays.asList(arr1,arr1);String[] arr2 = new String[] { "1","3" };CollectionString[] coll2 = Arrays.asList(arr2,arr2);assertEquals(coll1,coll2
我试图断言以下集合的平等:
String[] arr1= new String[] { "1","2","3" }; Collection<String[]> coll1= Arrays.asList(arr1,arr1); String[] arr2 = new String[] { "1","3" }; Collection<String[]> coll2 = Arrays.asList(arr2,arr2); assertEquals(coll1,coll2); 但是,我得到了与预期相反的结果 – 断言错误.问题是使用Object.equals()方法检查数组是否相等,它实际上检查了明显不同的数组的引用. 有没有方便的方法我可以使用JUnit或Guava来解决这个问题? 编辑:请注意,我想比较Collection对象,而不是数组本身. 解决方法
这就是Hamcrest来到rescque的地方.这是javadoc
link.我建议使用
IsArrayContainingInOrder
所以… assertThat(coll1,IsArrayContainingInOrder.arrayContaining(coll2)); 抱歉,以上内容适用于阵列,但下面的内容适用于集合…… assertThat(coll1,IsIterableContainingInOrder.contains(coll2.toArray())); 这使用IsIterableContainingInOrder 仅供参考,我发现使用Hamcrest匹配器如此优雅,以至于我很少使用非Hamcrest测试.所以我的所有测试都是这样的 assertThat(myValue,is(true)); assertThat(myValue,equalTo("something")); assertThat(myList,IsIterableContainingInAnyOrder.containsInAnyOrder(first,second,third)); 关于肥皂盒. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |