我有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");
}
}
问题在于您的测试代码。您已在qazxsw poi注释方法中初始化数据成员qazxsw poi。
每个reports
标签只执行一次。由于两个类都是从同一个基类扩展的,因此@BeforeSuite
方法只执行一次(例如,Test1.java)。
这就是为什么当你的<suite>
注释initialSetup()
试图访问@BeforeClass
为startBrowser()
时,你会遇到NullPointerException。
你需要通过在reports.createTest("Test1"+name);
方法中移动Test2
调用来改变它。