为了账号安全,请及时绑定邮箱和手机立即绑定

TestNG 断言中的运行时问题

TestNG 断言中的运行时问题

守着一只汪 2022-07-20 12:05:04
我有一个 TestNG 断言,由于断言的对象(ArrayList 元素)的状态,它可能偶尔会失败,当它发生时,我想显示这个状态。我创建了一个将在运行时失败的示例,以说明这个概念import static org.testng.Assert.assertEquals;@Testpublic 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)这里最好的方法是什么?我正在考虑一种处理异常的方法,但也许有更好的方法。
查看完整描述

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

下面应该工作:


import static org.testng.Assert.assertEquals;



@Test

public void sandbox() {

    ArrayList<Integer> arr = new ArrayList<>();

    assertEquals(arr.size(), 0, "The problem is: " + arr);

}


这也更实用,因为如果列表不为空,它将打印列表中的所有值而不是第一个值。


查看完整回答
反对 回复 2022-07-20
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

没有其他漂亮的方法可以做到这一点,因为您的所有参数都立即传递给被调用者,即您的方法,因此arr.get(0)必须已评估。


next()仅当有一个元素使用Iterator您的集合时,您才可以简单地调用该元素:


@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() : ""));

}


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信