如何处理TestNG中的ExpectedExceptions以便无论测试方法中的代码是否引发异常都可以通过测试
我有testng测试方法,该方法创建某些对象的列表。在每个对象的for循环中,将执行某些操作。此操作可能会或可能不会引发异常。如何使用@Test(expectedExceptions)使得无论是否引发异常,总体测试结果都是通过的。 根据我的理解,expectedExceptions总是会寻找异常。如果发现异常,则由Testng处理,测试结果为合格。如果未发现异常或引发了其他异常,则测试失败
pm.execute_notebook
预期:无论是否引发异常,测试方法都应通过。 即使抛出异常也应打印计数值
实际结果:测试方法通过(引发异常),但未打印计数值。 如果添加了任何try-catch逻辑,则将打印计数值,但测试方法将失败。这不是我想要的。
答案 0 :(得分:0)
参考此post之后, 通过实现IInvokedMethodListener-重写afterInvocation方法,我能够显式“修改” TestNG的结果状态。测试结果是通过。
答案 1 :(得分:0)
尝试SoftAssert。即使测试https://static.javadoc.io/org.testng/testng/6.13/org/testng/asserts/SoftAssert.html,
答案 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;
}
}
将计数打印到日志/控制台,然后再次引发异常。