Spring JUnittesting错误

当我尝试运行我的Spring JUnittesting时收到以下错误。 我只是试图熟悉使用Spring框架来创buildJUnits。

JUnit类:

package org.xxx.springdao.mongo_datadictionary; import static org.junit.Assert.*; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.xxx.springdao.mongo_datadictionary.SimpleSpringApp; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class SpringJunitTest { @Test public void testSpringTest() { SimpleSpringApp test = new SimpleSpringApp(); assertNotNull("Success", test); } } 

SpringJunitTest-context.xml中:

 <pre> <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> </beans> </block> 

pom.xml中:

  <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons-core</artifactId> <version>1.2.0.BUILD-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb-cross-store</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb-log4j</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.beans</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.aspects</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-java-driver</artifactId> <version>2.7.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.context</artifactId> <version>3.1.0.RC1</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.core</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.asm</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.aop</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.expression</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.orm</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.transaction</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.test</artifactId> <version>3.1.0.RC1</version> </dependency> 

错误:

testing错误:
初始化错误(org.saic.springdao.mongo_datadictionary.SpringJunitTest):org.springframework.beans.BeanUtils.instantiateClass(Ljava / lang / Class; Ljava / lang / Class;)Ljava / lang / Object;

堆栈跟踪:

 java.lang.NoSuchMethodError: org.springframework.beans.BeanUtils.instantiateClass(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; at org.springframework.test.context.ContextLoaderUtils.resolveContextLoader(ContextLoaderUtils.java:87) at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:298) at org.springframework.test.context.TestContext.<init>(TestContext.java:100) at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:117) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:119) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:108) 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:31) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(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) 

从Spring 3.0.6版本升级到3.1.0版本时,我遇到了同样的问题。 这是解决scheme:

某些依赖关系被列为3.1.0版本,但是它们将传递依赖关系parsing为没有错误消息中列出的方法的旧版本。

如果您使用Eclipse,请打开pom.xml并查看依赖关系层次结构选项卡。 您声明的某些库将被列为版本3.1.0,但具有parsing的3.0.6依赖性。 对我来说,我的pom中有spring-security-config和spring-security-taglibs,版本号为3.1,但是他们解决了像spring-core和spring-expression这样的依赖关系,如3.0.6。

为了解决这个问题,明确地列出你的pom中最高的传递依赖关系。 例如,我最初指望spring-security-config引入spring-core作为传递依赖,所以我没有在我的pom中列出spring-core神器。 但是为了解决这个问题,我改变了我的pom,明确地包含了spring-core(版本3.1.0)。 我添加了直接的依赖关系,解决了我的POM中的每一个已解决的依赖关系,然后它就可以工作了!

希望这可以帮助…

如果上面的解决scheme不工作,它可能是日食的错误:在日食,在项目 – >属性 – > Java构buildpath – >图书馆 – >如果有“Junit 4”,删除它。

我有这个堆栈跟踪:

 java.lang.NoSuchMethodError: org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:254) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) 

当然,更新POM并不是解决scheme。

它抱怨java.lang.NoSuchMethodError ,我认为这与你的spring的依赖关系。 尝试改变你的spring依赖这样的:

  <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.1.0.RC1</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-asm</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.1.0.RC1</version> </dependency> 

我不知道下面的依赖关系是从哪里来的,但是我认为他们也可能需要修正它们的artifactId:

  <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.transaction</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons-core</artifactId> <version>1.2.0.BUILD-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb-cross-store</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb-log4j</artifactId> <version>1.0.0.M5</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-java-driver</artifactId> <version>2.7.2</version> </dependency> 

最后,我想让你考虑一下,你真的需要所有这些依赖吗?

周杰伦是对的。 根据他所说的以及源自org.springframework.beans的错误,检查您的项目的依赖关系图,并通过排除org.springframework.beans上的传递依赖项并明确声明对最新或正确版本的依赖来解决任何版本冲突org.springframework.beans

对其他依赖也应该这样做,但是如果没有中断,就不要修复;除非你不能像我一样通过你的OCD。

我通过select项目来利用Netbeans,右键单击 – >显示依赖关系。 一旦进入依赖关系图视图,searchBeans。 双击依赖关系,右键单击解决版本冲突,其中像窗口这样的向导将提供额外的configuration来解决冲突。 小菜一碟!

谢谢Jay!

把这个添加到你的pom文件中,我有同样的错误,但是我已经做了这个,现在它适用于我,

  <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.1.0.RC1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.0.RELEASE</version> </dependency> 

注:我有POM父母和POM孩子,我想testing我的孩子项目,但我得到错误。 mvntesting….所以我已经做了这件事情。 在家长。

版本和孩子没有。 像这样一个org.springframework春豆

  <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> 

尝试一下。