You need to enable JavaScript to run this app. 使用Maven执行多个Selenium测试用例时出现WebDriver为空的空指针异常
优惠活动
大模型
产品
解决方案
定价
更多

使用Maven执行多个Selenium测试用例时出现WebDriver为空的空指针异常

问题现象
  • 项目包含2个Selenium测试类,手动逐个运行单个测试用例时全部可正常跑通
  • 使用Maven执行全量测试时,仅1个用例执行成功,其余用例抛出空指针异常
  • 报错堆栈指向:
java.lang.NullPointerException
at com.selenium.course.tests.ProductTests.executeProductTest(ProductTests.java:17)
  • 预期效果:所有测试用例无需手动逐个触发,直接通过Maven执行即可全部通过
排查与解决思路
  • 这类“手动单跑没问题、批量执行就报错”的情况,先定位空指针的具体对象:在ProductTests.java第17行打断点,分别在手动运行、Maven批量运行的场景下调试,看该行引用的对象是否为未初始化的null
  • 结合Selenium项目的常见问题,该报错大概率是全局静态共享WebDriver实例导致的:
    • 单跑测试类时,代码会完整走一遍驱动初始化流程,拿到可用的driver对象,自然不会报错
    • Maven批量跑多个测试类时,执行顺序和单跑时不同,先跑完的测试类会触发浏览器关闭、把全局静态的driver对象置空,后续执行的测试类再引用这个driver对象时,拿到的就是null,直接触发空指针
  • 具体修复动作:
    • 把测试基类里全局静态的WebDriver变量去掉,改成每个测试类独立管理自己的driver实例:用测试框架的前置注解在每个测试方法执行前新建驱动,测试结束后关闭驱动,从根源上避免跨类的实例状态污染
    • 检查Maven Surefire测试插件的配置,确保测试类执行时的类加载隔离没有被关闭,避免静态变量被不同测试类共享
    • 把所有依赖手动触发的初始化逻辑,全部迁到测试框架的生命周期注解里,避免批量执行时跳过初始化步骤

内容的提问来源于stack exchange,提问作者Александр Дерменжи

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 03:06:03