我有一个数字列表,已将其转换为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]
如何按预期传递此断言,发现值相同。
答案 0 :(得分:1)
obtainedList
是List<String>
,result
是List<Integer>
,它们从不相等。
您必须在两个列表上使用相同的类型来检查是否相等。
java.util.List
中的方法equals
执行以下操作:
将指定的对象与此列表进行比较以确保相等。当且仅当指定对象也是一个列表,并且两个列表具有相同的大小,并且两个列表中所有对应的元素对均相等时,返回true。 (如果(e1 == null?e2 == null:e1.equals(e2)),则两个元素e1和e2相等。)换句话说,如果两个列表包含相同顺序的相同元素,则两个列表定义为相等。 。此定义可确保equals方法可在List接口的不同实现中正常工作。
在您的情况下,字符串"5"
不等于整数5
,因此测试失败。