TestNG 断言中的运行时问题
Runtime problems in TestNG asserts
我有一个 TestNG 断言,由于断言对象(ArrayList 元素)的状态,它偶尔会失败,当它失败时,我想显示这个状态。
我创建了一个在运行时会失败的示例来说明这个概念
import static org.testng.Assert.assertEquals;
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
assertEquals(arr.size(), 0, "The problem is: " + arr.get(0).toString());
}
我预计断言会通过,当我删除第三个参数(消息)时它会通过。我看到这不是 TestNG 问题,因为执行没有进入语句,而是在这一步直接失败
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
最好的方法是什么?我正在考虑一种处理异常的方法,但也许有更好的方法。
谢谢
没有其他 pretty 方法可以做到这一点,因为您的所有参数都会立即传递给被调用方,即您的方法,因此 arr.get(0)
必须具有已评价
只有当有人使用 Iterator
而不是 collection 时,您才可以调用 next()
元素:
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
Iterator<Integer> it = arr.iterator();
assertEquals(arr.size(), 0, "The problem is: " + (it.hasNext() ? iterator.next() : ""));
}
下面应该有效:
import static org.testng.Assert.assertEquals;
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
assertEquals(arr.size(), 0, "The problem is: " + arr);
}
这也更实用,因为如果列表不为空,它将打印列表中的所有值而不是第一个值。
我有一个 TestNG 断言,由于断言对象(ArrayList 元素)的状态,它偶尔会失败,当它失败时,我想显示这个状态。
我创建了一个在运行时会失败的示例来说明这个概念
import static org.testng.Assert.assertEquals;
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
assertEquals(arr.size(), 0, "The problem is: " + arr.get(0).toString());
}
我预计断言会通过,当我删除第三个参数(消息)时它会通过。我看到这不是 TestNG 问题,因为执行没有进入语句,而是在这一步直接失败
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
最好的方法是什么?我正在考虑一种处理异常的方法,但也许有更好的方法。
谢谢
没有其他 pretty 方法可以做到这一点,因为您的所有参数都会立即传递给被调用方,即您的方法,因此 arr.get(0)
必须具有已评价
只有当有人使用 Iterator
而不是 collection 时,您才可以调用 next()
元素:
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
Iterator<Integer> it = arr.iterator();
assertEquals(arr.size(), 0, "The problem is: " + (it.hasNext() ? iterator.next() : ""));
}
下面应该有效:
import static org.testng.Assert.assertEquals;
@Test
public void sandbox() {
ArrayList<Integer> arr = new ArrayList<>();
assertEquals(arr.size(), 0, "The problem is: " + arr);
}
这也更实用,因为如果列表不为空,它将打印列表中的所有值而不是第一个值。