春季运行的单元测试作为组失败,但单独通过



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

<>之前java.lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotatedElementUtilsorg.springframework.test.context.MetaAnnotationUtils AnnotationDescriptor美元。(MetaAnnotationUtils.java: 269)org.springframework.test.context.MetaAnnotationUtils AnnotationDescriptor美元。(MetaAnnotationUtils.java: 257)org.springframework.test.context.MetaAnnotationUtils UntypedAnnotationDescriptor美元。(MetaAnnotationUtils.java: 326)org.springframework.test.context.MetaAnnotationUtils.findAnnotationDescriptorForTypes (MetaAnnotationUtils.java: 171)org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration (ContextLoaderUtils.java: 621)在org.springframework.test.context.DefaultTestContext。(DefaultTestContext.java: 93)在org.springframework.test.context.TestContextManager。(TestContextManager.java: 119)org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager (SpringJUnit4ClassRunner.java: 120)在org.springframework.test.context.junit4.SpringJUnit4ClassRunner。(SpringJUnit4ClassRunner.java: 109)在sun.reflect.NativeConstructorAccessorImpl。newInstance0(本地方法)sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java: 39)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java: 27)java.lang.reflect.Constructor.newInstance (Constructor.java: 513)在org.junit.internal.builders.AnnotatedBuilder.buildRunner (AnnotatedBuilder.java: 29)在org.junit.internal.builders.AnnotatedBuilder.runnerForClass (AnnotatedBuilder.java: 21)org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java: 59)在org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass (AllDefaultPossibilitiesBuilder.java: 26)org.junit.runners.model.RunnerBuilder.safeRunnerForClass (RunnerBuilder.java: 59)在org.junit.internal.requests.ClassRequest.getRunner (ClassRequest.java: 26)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference。(JUnit4TestReference.java: 33)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference。(JUnit4TestClassReference.java: 25)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest (JUnit4TestLoader.java: 48)在org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests (JUnit4TestLoader.java: 38)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java: 452)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java: 683)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java: 390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main (RemoteTestRunner.java: 197)org.springframework.core.annotation.AnnotatedElementUtils在java.net.URLClassLoader 1.美元运行(URLClassLoader.java: 202)在java.security.AccessController。doPrivileged(本地方法)java.net.URLClassLoader.findClass (URLClassLoader.java: 190)java.lang.ClassLoader.loadClass (ClassLoader.java: 306)sun.misc.Launcher AppClassLoader.loadClass美元(Launcher.java: 301)java.lang.ClassLoader.loadClass (ClassLoader.java: 247)…27日更之前

有办法解决吗?

吉文斯:

  • JUnit Version 4.11
  • Spring Version 3.2.9-RELEASE
  • 所有测试使用@RunWith(SpringJUnit4ClassRunner.class)—其他使用此运行器的测试单独成功,并作为组/套件
  • 所有测试使用@ContextConfiguration(classes = { MyModuleConfiguration.class })
  • 所有测试都有@Autowired @BeanMyModuleConfiguration中定义。
  • Maven Central说AnnotatedElementUtils是Spring 4类,但是我的依赖树没有显示Spring 4 任何
  • 这个问题是类似的,他看起来已经能够通过改变一些(不清楚)版本来解决这个问题。
  • [Update 1] mvn test在每个模块上成功

我也面临同样的问题,但发现我使用的是依赖于spring 4依赖的spring数据版本。我降低了spring数据依赖的版本来解决这个问题

相关内容

最新更新