JUnit Jupiter中等价JUnit4测试套件的创建及兼容问题排查
二、解决json-simple导致的NoSuchMethodError冲突
冲突原因
com.googlecode.json-simple:json-simple:1.1.1这个依赖的jar包中包含了一个旧版本的JUnit类org.junit.runner.Description,这个类的createSuiteDescription方法签名和你项目中使用的JUnit 4.12版本的方法签名不匹配。当JUnitPlatform运行时,类加载器会优先加载json-simple里的这个旧类,导致找不到正确的方法,从而抛出NoSuchMethodError。
解决方法
有两种可靠的方案,任选其一即可:
方案1:排除json-simple中的JUnit依赖(推荐)
在Gradle构建脚本中,给json-simple依赖添加排除规则,移除它自带的JUnit相关依赖:
compile ('com.googlecode.json-simple:json-simple:1.1.1') { exclude group: 'junit', module: 'junit' }
这样json-simple就不会把旧的JUnit类带入你的项目,项目会使用你自己声明的JUnit 4.12版本的类,冲突自然解决。
方案2:升级json-simple到无冲突版本
json-simple从1.1.2版本开始已经移除了JUnit依赖,你可以直接升级依赖版本:
compile 'com.googlecode.json-simple:json-simple:1.1.2'
或者使用最新的稳定版,既能避免冲突,也能获得后续的bug修复。
修改完依赖后,重新同步Gradle项目,再运行测试套件,应该就不会再出现那个错误了。
内容的提问来源于stack exchange,提问作者Kira Resari
相关产品推荐
相关产品推荐

