java - 排序顺序断言失败
问题描述
我有一个数字列表,我已将其转换为 int 数组列表并对该数字进行排序。问题是哪个断言列表在元素 [0] 处有所不同: 5 != 5 expected [5] but found [5] 。我不明白问题出在哪里。
ArrayList<String> obtainedList = new ArrayList<>();
List<WebElement> elementList = driver.findElements(By.xpath("//mat-table//mat-row/mat-cell[2]"));
for (WebElement we : elementList) {
obtainedList.add(we.getText());
}
List<Integer> result = obtainedList.stream().map(Integer::valueOf).sorted() // sort the elements
.collect(Collectors.toList());
Collections.sort(result);
//Collections.reverse(result);
Reporter.log(AddRule + obtainedList + result + " Cloumn is display in Ascending order");
Add_Log.info(AddRule + obtainedList + result + " Cloumn is display in Ascending order");
Assert.assertEquals(result, obtainedList);
输出
No.[5, 7, 8, 10, 11, 12, 19, 22, 92, 96, 98, 99]
[5, 7, 8, 10, 11, 12, 19, 22, 92, 96, 98, 99]
Cloumn is display in Ascending order
断言失败
java.lang.AssertionError: Lists differ at element [0]:
5 != 5 expected [5] but found [5]
我怎样才能按预期传递这个断言并且发现的值是相同的。
解决方案
obtainedList
是 a List<String>
,result
是 aList<Integer>
他们永远不相等。
您必须在两个列表上使用相同的类型来检查是否相等。
的方法equals
执行java.util.List
以下操作:
比较指定对象与此列表是否相等。当且仅当指定对象也是一个列表时返回 true,两个列表具有相同的大小,并且两个列表中所有对应的元素对都相等。(如果 (e1==null ? e2==null : e1.equals(e2)) 两个元素 e1 和 e2 相等。)换句话说,如果两个列表以相同的顺序包含相同的元素,则它们被定义为相等. 此定义确保 equals 方法在 List 接口的不同实现中正常工作。
在您的情况下, String"5"
不等于 Integer 5
,因此测试失败。
推荐阅读
- ocaml - OCaml 阶数为 0
- netsuite - 将日期过滤器添加到脚本搜索(SuiteScript 1.0)的正确方法是什么?
- javascript - 如何将一个三维数组分成三个 for in 循环?
- python - python2和python3中的atexit - 不同的行为
- ruby-on-rails - 在 Ruby 中抢救异常时的问题
- javascript - 具有唯一 id 元素的 JQuery 总和行
- windows - 任务列表 csv 脚本
- javascript - 如何将 JSON(从 google-trends-api)转换为 CSV?
- powershell - 如何在 PowerShell 中将数组对象转换为一个对象?
- reporting-services - SSRS 报告中的垂直文本框在生产中不显示,在 PDF 导出和打印模式下显示