You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TestNG运行继承基类的Selenium登录测试用例报空指针异常如何修复

问题根因

空指针异常由变量作用域冲突导致:基类BaseClass已经声明了全局的WebDriver driver成员变量,但在setUp()方法中你重复声明了同名的局部变量WebDriver driver = new ChromeDriver();,该局部变量仅在setUp方法内部生效,全局成员变量driver始终没有被赋值,因此测试方法调用时就会触发空指针报错。

修复方案
  • 修改BaseClass的setUp()方法,去掉局部driver的类型声明,直接给全局driver赋值即可,修改后的代码如下:
@BeforeClass
public void setUp ()
{
    System.out.println("in setup");
    WebDriverManager.chromedriver().setup();
    // 移除前面的WebDriver类型声明,直接为全局driver赋值
    driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
    driver.manage().window().maximize();
}
  • 可选优化:如果没有多线程并行测试的需求,可以去掉全局driver的static修饰符,避免多个测试用例运行时driver实例互相覆盖的问题;如果需要支持并行测试,可以改用ThreadLocal存储driver实例。
其他优化建议

隐式等待是driver的全局生效配置,仅需要在driver初始化时设置一次即可,setUserName方法中重复设置隐式等待的代码可以直接删除。

内容的提问来源于stack exchange,提问作者mittalri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:06:08