Gradle Groovy与RestAssured Groovy版本冲突导致自动化测试运行报错
问题根因
这是典型的Groovy依赖版本冲突:
- RestAssured 4.2.0配套的
xml-path/json-path组件依赖Groovy 2.5.8版本 - TestNG 7.4.0默认内置依赖Groovy 3.0.8版本
两个版本的groovy-xml包同时被加载到classpath就触发了这个运行时异常。
解决方案
方案1:全局锁定Groovy版本(最稳妥)
在你的build.gradle根节点添加配置,强制全项目使用和RestAssured匹配的Groovy版本:
configurations.all { resolutionStrategy.force 'org.codehaus.groovy:groovy-all:2.5.8' resolutionStrategy.force 'org.codehaus.groovy:groovy-xml:2.5.8' resolutionStrategy.force 'org.codehaus.groovy:groovy-json:2.5.8' }
该配置优先级高于所有依赖的传递依赖声明,会直接统一所有Groovy相关组件的版本。
方案2:升级RestAssured适配Groovy 3.0
把所有RestAssured相关依赖的版本从4.2.0升级到4.4.0及以上,4.4.0以上版本的RestAssured已经完成Groovy 3.0适配,可以和TestNG 7.4.0兼容:
compile group: 'io.rest-assured', name: 'rest-assured', version: '4.4.0' compile group: 'io.rest-assured', name: 'json-schema-validator', version: '4.4.0' compile group: 'io.rest-assured', name: 'json-path', version: '4.4.0' compile group: 'io.rest-assured', name: 'xml-path', version: '4.4.0'
方案3:降级TestNG匹配现有RestAssured版本
把TestNG版本从7.4.0降到7.3.0,该版本TestNG依赖的Groovy版本为2.5.x,和RestAssured 4.2.0适配:
compile group: 'org.testng', name: 'testng', version: '7.3.0'
额外优化建议
你当前的依赖中重复声明了Appium Java客户端,io.appium:java-client和com.github.appium:java-client是同一包的不同镜像源,删掉其中一个即可,避免后续出现其他依赖冲突。
内容的提问来源于stack exchange,提问作者Agustín Jacob
相关产品推荐
相关产品推荐

