我有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");
}
}
答案 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
调用来更改此设置。