背景:testng老版本,多线程下 priority和 depencyOn 注解的脚本不能在同一进程下执行,导致并发执行失败。新版本解决了该问题,需要升级。
问题:升级testng版本到7.6.0后,mvn执行testng用例报类文件错误
具体错误提示如下:
java: 无法访问org.testng.Assert
错误的类文件: /C:/Users/xxx/.m2/repository/org/testng/testng/7.6.0/testng-7.6.0.jar!/org/testng/Assert.class
类文件具有错误的版本 55.0, 应为 52.0
请删除该文件或确保该文件位于正确的类路径子目录中。
排查原因:jdk版本和testng使用的jdk版本不统一。testng版本 7.6官网显示是JDK11以上版本才可用。我本地用的还是jdk8。
解决方案1:升级jdk版本,但需要确认业务代码是否兼容jdk的高版本,另外升级后还需要注意重新配置环境变量;
解决方案2:降级testng版本,如果遇到编译报错,需要调整业务脚本。如“业务脚本的assertEquals断言不兼容,是由于高版本的testng对assert进行了扩充”。