我想将项目从JDK8升级到JDK11,整个业务逻辑都进行得很好,但是当maven到达测试类时,它们全部失败,并且具有完全相同的异常。例如
initializationError(com.foo.bar.etc.utils.TimeUtilsTest) Time elapsed: 0 sec <<< ERROR!
java.lang.NoSuchMethodError: 'void org.springframework.util.Assert.state(boolean, java.util.function.Supplier)'
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.ensureSpringRulesAreNotPresent(SpringJUnit4ClassRunner.java:120)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:141)
at org.springframework.test.context.junit4.SpringRunner.<init>(SpringRunner.java:49)
at jdk.internal.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:283)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:173)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:128)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:203)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
一切完成后,只需将所有测试类与list进行汇总即可
Tests in error:
BaseSpringTest.initializationError » NoSuchMethod 'void org.springframework.ut...
EmailAttachmentDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
EmailEventDaoImplTest.initializationError » NoSuchMethod 'void org.springframe...
EmailMappingDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
EmailRequestDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
EmailWindowsDaoImplTest.initializationError » NoSuchMethod 'void org.springfra...
ServiceClientDaoImplTest.initializationError » NoSuchMethod 'void org.springfr...
TemplateContextDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
TemplateMappingDaoImplTest.initializationError » NoSuchMethod 'void org.spring...
TemplateMetadataDaoImplTest.initializationError » NoSuchMethod 'void org.sprin...
VarMetadataDaoImplTest.initializationError » NoSuchMethod 'void org.springfram...
TemplateContextStorageTest.initializationError » NoSuchMethod 'void org.spring...
ApiRequestFilterTest.initializationError » NoSuchMethod 'void org.springframew...
TemplateResolutionServiceTest.initializationError » NoSuchMethod 'void org.spr...
AwsS3ClientTest.initializationError » NoSuchMethod 'void org.springframework.u...
TimeUtilsTest.initializationError » NoSuchMethod 'void org.springframework.uti...
某些版本可能有问题吗?我知道这需要添加一些jar,或者将JDK之外的其他内容升级到版本11
在JDK8 btw上,测试运行良好,我想这是一个重要的细节。
在将spring-core从版本4移至版本5后,该问题得以解决。由于某些未知的原因,所有spring jar均是版本5例外spring-core,这使其成为一个Spring Boot应用程序更加奇怪,因此整个spring捆绑销售jars是版本5,除了spring-core。
这表明您在pom中正在做奇怪的事情。
某种原因将其强制为版本4,而不是常规管理。因此,在依赖项列表中必须有一个依赖项可以做到这一点。但是,在没有看到您的实际pom的情况下,很难说出哪个依赖项。