java - 比较 2 List<String> 是否以任何顺序包含相同元素 [JUnit - Asset]

标签 java list junit matcher

我想通过使用 JUnit 创建单元测试来测试是否正确生成了一些字符串列表。

我有 2 个字符串列表(我代码中的一个列表是 private static final,比方说 list1),具有相同的元素(相同的元素可以相乘),但顺序不同:

List<String> list1 = Arrays.asList("a","b","c");
List<String> list2 = Arrays.asList("c","a","b");
assertThat(list1 , containsInAnyOrder(list2));

这不起作用,junit 测试返回第一个元素不匹配。

我可能错误地使用了 containsInAnyOrder 方法。

containsInAnyOrder(java.util.Collection<Matcher<? super T>> itemMatchers) 

我不知道如何实现这个Matcher

我不想使用这种类型的函数,因为它只适用于少量元素:

containsInAnyOrder(T... items)

最佳答案

您可以先对两个 List 进行排序,然后比较排序后的 List

List<String> list1 = Arrays.asList("a","b","c");
List<String> list2 = Arrays.asList("c","a","b",);
Collections.sort(list1);
Collections.sort(list2);
assertEquals( list1, list2 ); // true

关于java - 比较 2 List<String> 是否以任何顺序包含相同元素 [JUnit - Asset],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46788032/

相关文章:

python获取列表中元组的第二个值

java - 编写处理行尾断言的跨平台单元测试

java - 在if语句中比较AssertNull

java - 关闭 EmbeddedCassandraServerHelper 时出现 CancellationException

audio - IcedTea 的 Java Sound 脉冲音频实现可以从 OpenJDK 获取并在 Sun Java 上运行吗

java - Spring Reactive MVC 与 @EnableAsync

python - 为什么我的代码不适用于单个列表但适用于嵌套列表?

c# - 没有 For 循环的列表操作

java - 如果()不工作

scala - JUnit 理论和 Scala