使用ExtentReport获取空指针异常

时间:2019-03-17 15:34:18

标签: java testng

我有3节课。 Test1,Test2和基类。 Test1和Test2扩展了基类。当我使用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");
  }
}

1 个答案:

答案 0 :(得分:2)

问题出在您的测试代码上。 您已经使用Student ID | Student Name | Subject Name | Subject Desc -----------+--------------+--------------+------------- 100 John Math Math 100 John History History 101 Micheal Math Math 101 Micheal History History 注释的方法初始化了数据成员reports

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

这就是为什么当您的initialSetup()注释的@BeforeClass试图访问startBrowser()的{​​{1}}时,您遇到了NullPointerException。

您需要通过从reports.createTest("Test1"+name);方法内部移动Test2调用来更改此设置。