gpt4 book ai didi

java - Spring 运行的单元测试作为组失败,但单独通过

转载 作者:行者123 更新时间:2023-12-02 07:20:18 24 4
gpt4 key购买 nike

我有几个 JUnit 测试,全部使用 SpringJUnit4ClassRunner 运行。我可以从我的 SpringSource Tool Suite (Eclipse Juno) IDE 按类单独运行它们,并且它们通过了。如果我尝试按模块运行它们(“运行所选项目中的所有测试”),则它们会失败并出现以下 NoClassDefFoundError 初始化错误:

java.lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotatedElementUtils    at org.springframework.test.context.MetaAnnotationUtils$AnnotationDescriptor.(MetaAnnotationUtils.java:269)    at org.springframework.test.context.MetaAnnotationUtils$AnnotationDescriptor.(MetaAnnotationUtils.java:257)    at org.springframework.test.context.MetaAnnotationUtils$UntypedAnnotationDescriptor.(MetaAnnotationUtils.java:326)    at org.springframework.test.context.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:171)    at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:621)    at org.springframework.test.context.DefaultTestContext.(DefaultTestContext.java:93)    at org.springframework.test.context.TestContextManager.(TestContextManager.java:119)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:120)    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.(SpringJUnit4ClassRunner.java:109)    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)    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:26)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.(JUnit4TestReference.java:33)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.(JUnit4TestClassReference.java:25)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)Caused by: java.lang.ClassNotFoundException: org.springframework.core.annotation.AnnotatedElementUtils    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)    ... 27 more

有什么想法可以解决吗?或者甚至排除故障。

鉴于:

  • JUnit 版本 4.11
  • Spring 版本 3.2.9-RELEASE
  • 所有测试都使用@RunWith(SpringJUnit4ClassRunner.class)——使用此运行程序的其他测试单独成功并作为组/套件成功
  • 所有测试均使用@ContextConfiguration(classes = { MyModuleConfiguration.class })
  • 所有测试都在 MyModuleConfiguration 中定义了 @Autowired @Bean
  • Maven Central says AnnotatedElementUtils is a Spring 4 class ,但我的依赖树没有显示 Spring 4 任何东西
  • This question类似,他看起来能够通过更改一些(不清楚的)版本来解决问题。
  • [更新 1] 每个模块上的 mvn 测试 成功。

最佳答案

我也遇到了同样的问题,但发现我使用的是依赖于 spring 4 依赖项的 spring data 版本。我降低了 spring data 依赖的版本来解决这个问题。

关于java - Spring 运行的单元测试作为组失败,但单独通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com