排序顺序断言失败

时间:2019-01-11 14:17:44

标签: java arrays selenium sorting assert

我有一个数字列表,已将其转换为int数组列表并对该数字进行排序。 问题是哪个断言列表在元素[0]处不同:5!= 5预期[5]但找到[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]

如何按预期传递此断言,发现值相同。

1 个答案:

答案 0 :(得分:1)

obtainedListList<String>resultList<Integer>,它们从不相等。

您必须在两个列表上使用相同的类型来检查是否相等。

java.util.List中的方法equals执行以下操作:

  

将指定的对象与此列表进行比较以确保相等。当且仅当指定对象也是一个列表,并且两个列表具有相同的大小,并且两个列表中所有对应的元素对均相等时,返回true。 (如果(e1 == null?e2 == null:e1.equals(e2)),则两个元素e1和e2相等。)换句话说,如果两个列表包含相同顺序的相同元素,则两个列表定义为相等。 。此定义可确保equals方法可在List接口的不同实现中正常工作。

在您的情况下,字符串"5"不等于整数5,因此测试失败。