You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 11:30:52