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

TestNG expectedExceptions 处理:有我的蛋糕和吃它吗?

TestNG expectedExceptions 处理:有我的蛋糕和吃它吗?

撒科打诨 2022-10-20 17:19:49
如何在TestNG中处理expectedExceptions,这样无论测试方法中的代码是否抛出异常,测试都是通过的我有创建某些对象列表的 testng 测试方法。在每个对象的 for 循环中,都会执行特定的操作。此操作可能会或可能不会引发异常。如何使用@Test(expectedExceptions) 使得无论是否抛出异常,整体测试结果都是通过。根据我的理解,expectedExceptions 总是会寻找异常。如果发现异常,则由 Testng 处理,测试结果通过。如果未找到异常或抛出不同的异常,则测试失败public class DemoException {@Test(expectedExceptions = {ConnectException.class})public void testException() throws ConnectException  {    //pseudo code......       //create a List<WebElement> myList    int count = 0;    for(WebElemet we: myList){     we.connect(); //this may or may not throw exception     we.getResponseMessage(); // further actions on we is needed     we.disconnect();     //above 3 are HttpURLConnection methods to be precise     // Basically do - connect, getResponse, disconnect   System.out.println(count++);      // print count is needed - exception thrown or not thrown  } }}预期:无论是否抛出异常,测试方法都应该通过。即使抛出异常也应该打印计数值实际结果:测试方法通过(抛出异常)但不打印计数值。如果添加了任何 try-catch 逻辑,则打印计数值但测试方法失败。这不是我想要的。
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

你为什么不试试这个:


@Test(expectedExceptions = Exception.class)

public void MyTest() throws Exception {

    int count = 0;

    try {

        for (int i = 0; i < 10; i++) {


            throw new Exception("Fake Exception");

        }

    }

    catch (Exception ex)

    {

        System.out.println(count++);

        throw  ex;

    }

}

将计数打印到日志/控制台,然后再次抛出异常。



查看完整回答
反对 回复 2022-10-20
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

尝试 SoftAssert。即使测试失败,它也会继续https://static.javadoc.io/org.testng/testng/6.13/org/testng/asserts/SoftAssert.html


查看完整回答
反对 回复 2022-10-20
?
Helenr

TA贡献1780条经验 获得超3个赞

参考这篇文章后,我能够通过实现 IInvokedMethodListener 显式“修改”TestNG 的结果状态 - 覆盖 afterInvocation 方法。测试结果是通过。



查看完整回答
反对 回复 2022-10-20
  • 3 回答
  • 0 关注
  • 113 浏览

添加回答

举报

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