TestNG ExpectedExceptions处理:我的蛋糕好吃吗?

时间:2019-04-25 06:13:24

标签: java selenium exception testng

如何处理TestNG中的ExpectedExceptions以便无论测试方法中的代码是否引发异常都可以通过测试

我有testng测试方法,该方法创建某些对象的列表。在每个对象的for循环中,将执行某些操作。此操作可能会或可能不会引发异常。如何使用@Test(expectedExceptions)使得无论是否引发异常,总体测试结果都是通过的。 根据我的理解,expectedExceptions总是会寻找异常。如果发现异常,则由Testng处理,测试结果为合格。如果未发现异常或引发了其他异常,则测试失败

pm.execute_notebook

预期:无论是否引发异常,测试方法都应通过。 即使抛出异常也应打印计数值

实际结果:测试方法通过(引发异常),但未打印计数值。 如果添加了任何try-catch逻辑,则将打印计数值,但测试方法将失败。这不是我想要的。

3 个答案:

答案 0 :(得分:0)

参考此post之后, 通过实现IInvokedMethodListener-重写afterInvocation方法,我能够显式“修改” TestNG的结果状态。测试结果是通过。

答案 1 :(得分:0)

答案 2 :(得分:0)

你为什么不试试这个:

@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;
    }
}

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