TestNG运行报NoSuchMethodError所有测试用例跳过如何解决?
问题根因
- 核心是Apache Commons-IO依赖版本不兼容:你项目pom.xml中配置的commons-io版本为
1.3.2,而你使用的WebDriverManager 4.3.1依赖2.0以上版本的commons-io,低版本commons-io不存在错误栈提示的IOUtils.toString(InputStream, Charset)方法,所以抛出java.lang.NoSuchMethodError - 所有测试用例被跳过是因为TestNG的前置配置方法
@BeforeClass(对应baseClass中的setUp方法)执行失败,TestNG默认会跳过该类下所有关联测试用例,和你看到的「配置失败1、全部用例跳过」的表现完全匹配。
解决方案
步骤1:升级commons-io依赖版本
将pom.xml中原有的commons-io依赖配置替换为兼容的高版本,推荐使用2.11.0稳定版:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency>
步骤2:刷新Maven依赖
执行Maven命令强制更新依赖,清理本地缓存的旧版本包:
mvn clean install -U
步骤3:重新运行测试
重启IDE后执行测试脚本即可恢复正常执行。
可选验证步骤
如果升级后仍出现同类错误,可执行以下命令查看项目依赖树,排查是否有其他依赖间接引入了低版本commons-io:
mvn dependency:tree | grep commons-io
找到低版本commons-io的引入源后,在对应依赖中添加<exclusions>配置排除低版本commons-io即可。
内容的提问来源于stack exchange,提问作者Divya
相关产品推荐
相关产品推荐

