使用ExtentReport获取空指针异常

问题描述 投票:2回答:1

我有3节课。 Test1,Test2和Base类。 Test1和Test2扩展了Base类。当我使用TestNg xml执行这两个类时,它使@BeforeClass失败并返回空指针异常。 test1的报告正在生成。也没有范围报告其工作正常。请帮我

====================================基类============ ==================

public class Base
{
public ExtentReports reports;
public ExtentTest logger;
  @BeforeClass

  public void startBrowser() 
  {
      String name= LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMMYY_HHmmss"));
      logger = reports.createTest("Test1"+name);
      System.out.println("Started Test1");

}

  @BeforeSuite
  public void initialSetup()
  {
      String name= LocalDateTime.now().format(DateTimeFormatter.ofPattern("ddMMMYY_HHmmss"));
      ExtentHtmlReporter extent = new ExtentHtmlReporter(new File("./Reports/"+name+".html"));
      reports = new ExtentReports();
      reports.attachReporter(extent); 
  }

  @AfterClass
  public void end()
  {
      reports.flush();
  }

}

=========================== Test1类=====================

public class Test1 extends Base{
  @Test
  public void TestCase() 
  {

      logger.info("Test1");
  }
}

==================== Test2类============================ =

public class Test2 extends Base{
  @Test
  public void f() 
  {
      System.out.println("Started Test2");
  }
}
java testng
1个回答
2
投票

问题在于您的测试代码。您已在qazxsw poi注释方法中初始化数据成员qazxsw poi。

每个reports标签只执行一次。由于两个类都是从同一个基类扩展的,因此@BeforeSuite方法只执行一次(例如,Test1.java)。

这就是为什么当你的<suite>注释initialSetup()试图访问@BeforeClassstartBrowser()时,你会遇到NullPointerException。

你需要通过在reports.createTest("Test1"+name);方法中移动Test2调用来改变它。

© www.soinside.com 2019 - 2024. All rights reserved.