通过testng做接口和业务层代码测试的时候,引入了一下的依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-test</artifactId><version>2.6.3</version><scope>test</scope></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.1.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.15</version><scope>test</scope></dependency>
本地跑test类挺好的,于是就把代码提交上去了,团队中的其他成员更新了以后,做打包部署的时候报了以下的错误:
orgtestng/Ilestlistener has been compiled by a more recent version of the Java Runtime (clas file version 55.0), this version of the Jara Runtimeognizes class file versions up to 52.0
一看就知道testng的包是jdk11编译的,但是我们本地打包编译环境是jdk8。我这边在本地打包一下,发现没有这个错误,于是两个人一脸懵啊,怎么回事呢?
于是就把关于测试的部分代码都屏蔽掉,发现还是报上述错误,于是大家一起看看出问题的同事的pom文件,发现多了以下的依赖:
<dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>RELEASE</version><scope>test</scope></dependency>
这玩意从哪来的?也没主动做引入啊,而且这个RELEASE是哪个版本?就到了对方的.m2下的Repository下面找打org.testng看了以下,发现版本是7.7.1,最新的Release版本。赶紧去掉,打包成功。估计是没更新到pom中的依赖,然后通过idea的提示自动导入依赖,所以添加了这部分的配置。
事后到testng的官网看了一下,发现高版本确实是需要jdk11以上版本的支持的
至此闹剧结束。