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
相关产品推荐
相关产品推荐

