如何使用TestNG仅针对空指针异常重试测试用例?
实现仅针对NullPointerException的TestNG测试重试
完全可行,TestNG可以通过自定义重试逻辑精准实现「仅指定测试用例在抛出空指针异常时触发重试」的需求,具体实现步骤如下:
1. 自定义重试分析器
实现TestNG的IRetryAnalyzer接口,在重试判断逻辑中加入异常类型校验,仅当抛出NullPointerException且未达到最大重试次数时允许重试:
import org.testng.IRetryAnalyzer; import org.testng.ITestResult; public class NullPointerRetryAnalyzer implements IRetryAnalyzer { private int retryCount = 0; private static final int MAX_RETRY_TIMES = 2; // 自定义最大重试次数 @Override public boolean retry(ITestResult result) { // 校验异常类型和重试次数 if (result.getThrowable() instanceof NullPointerException && retryCount < MAX_RETRY_TIMES) { retryCount++; return true; } return false; } }
2. 绑定到指定测试用例
在需要启用该重试规则的测试方法上,通过@Test注解的retryAnalyzer属性指定自定义的重试分析器即可:
import org.testng.annotations.Test; public class TargetTestCases { // 仅该测试用例会在抛出空指针时触发重试 @Test(retryAnalyzer = NullPointerRetryAnalyzer.class) public void testNeedNullPointerRetry() { Object nullObj = null; nullObj.toString(); // 触发NullPointerException,会按设定次数重试 } // 此测试用例无重试逻辑,即使抛出其他异常也不会重试 @Test public void testNoRetry() { int divideZero = 1 / 0; // 抛出ArithmeticException,不会重试 } }
如果需要批量为多个测试用例配置该规则,也可以结合IAnnotationTransformer监听器+自定义注解的方式实现,避免逐个测试方法添加属性的重复操作。
内容的提问来源于stack exchange,提问作者Bhoomika Devaraj
相关产品推荐
相关产品推荐

