首页 > 解决方案 > 排序顺序断言失败

问题描述

我有一个数字列表,我已将其转换为 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]

我怎样才能按预期传递这个断言并且发现的值是相同的。

标签: javaarraysseleniumsortingassert

解决方案


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,因此测试失败。


推荐阅读