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

ExtentTest空指针异常:仅修改OpportunityCreationTest的修复方案咨询

问题分析

报错的核心是org.mdb.reports.ExtentManager.getExtentTest()返回了null,导致调用com.aventstack.extentreports.ExtentTest.info(String)时触发java.lang.NullPointerException。这说明在执行Base.login()(内部调用了ExtentLogger.info())前,没有在测试类中初始化并绑定有效的ExtentTest实例到ExtentManager。

解决方案(仅修改OpportunityCreationTest.java)

你需要在测试类中添加测试前后的初始化/清理逻辑,确保ExtentTest实例在调用Base.login()前已被正确绑定:

import org.mdb.reports.ExtentManager;
import com.aventstack.extentreports.ExtentTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

public class OpportunityCreationTest extends Base {
    private ExtentTest currentTest;

    @BeforeMethod
    public void initExtentTest() {
        // 创建ExtentTest实例并绑定到ExtentManager
        currentTest = ExtentManager.getExtentReports().createTest("Opportunity Creation Test Case");
        ExtentManager.setExtentTest(currentTest);
    }

    @Test
    public void createOpportunity() {
        login(); // 此时ExtentLogger能获取到非null的ExtentTest实例
        // 你的机会创建测试逻辑
    }

    @AfterMethod
    public void clearExtentTest() {
        // 测试结束后清理,避免影响后续测试实例
        ExtentManager.setExtentTest(null);
    }
}
关键说明
  • 假设ExtentManager.getExtentReports()已经初始化了ExtentReports实例(如果其他测试用例能正常生成Extent报告,说明这部分已配置完成)
  • @BeforeMethod确保每个测试方法执行前都会创建独立的ExtentTest实例,避免测试间的状态冲突
  • @AfterMethod的清理步骤是可选的,但能避免残留实例干扰其他测试

内容的提问来源于stack exchange,提问作者Bavani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:17:13