java - 使用 ExtentReport 获取空指针异常
问题描述
我有 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");
}
}
解决方案
问题在于您的测试代码。reports
您已在带@BeforeSuite
注释的方法中初始化数据成员。
每个<suite>
标签只执行一次。由于您的两个类都是从同一个基类扩展而来,因此该initialSetup()
方法将只执行一次(例如,Test1.java)。
这就是为什么当您的带@BeforeClass
注释的startBrowser()
访问尝试遇到 NullPointerException 时。reports.createTest("Test1"+name);
Test2
您需要通过initialSetup()
从@BeforeClass
方法中移动您的调用来改变这一点。
推荐阅读
- google-apps-script - 在哪里可以找到(跟踪)Google Apps Script API 更改和新功能?
- azure-active-directory - 在查询 https://graph.microsoft.com/beta/users/delta?$select= 时检测已删除的用户
- sql-server - 将新数据从一个表复制到另一个表
- jenkins - Jenkins Git-Push 只有主分支
- sql - 通过动态参数按时间分组
- android - ViewPager 和 YouTube API
- android - onClick 不抓 int 增加另一个 onClick 内?
- cassandra - 使用两个单独的 OSE 集群的 Cassandra 多直流设置
- google-apps-script - Custom Email based on Cell values in google sheets
- java - 启动期间的 Elastic Search AllPermission 安全管理器问题