2011-11-23 20 views
35

मैं निम्नलिखित त्रुटि मिल रही है जब मैं अपने स्प्रिंग JUnit परीक्षण चलाने के लिए प्रयास करते हैं। मैं स्प्रिंग फ्रेमवर्क का उपयोग कर जुनीट बनाने से परिचित होने की कोशिश कर रहा हूं।स्प्रिंग JUnit टेस्ट त्रुटि

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> 

त्रुटि:

Tests in error:
initializationError(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) 
+0

इस context.xml फ़ाइल में पूर्ण है? और क्या आप आरसी संस्करण की बजाय वसंत के स्थिर संस्करण के साथ नमूना चलाने का प्रयास कर सकते हैं? मुझे लगता है कि 'ContextLoaderUtils' एक नई कक्षा है इसलिए त्रुटि का पता लगाना मुश्किल है। – melihcelik

+0

मुझे एक ही समस्या है। काम करता है जब मैं एमवीएन साफ ​​स्थापित करता हूं .. लेकिन एक ही त्रुटि के साथ एसटीएस में विफल रहता है .. कुछ 3.1.0 आरसी – user48545

उत्तर

56

वसंत 3.0.6 और 3.1.0 रिलीज से अपग्रेड करते समय मेरे पास यह वही समस्या थी। यहाँ समाधान है:

अपने निर्भरता से कुछ 3.1.0 संस्करण होने के रूप में सूचीबद्ध किया गया है, लेकिन वे पुराने संस्करणों जो विधि त्रुटि संदेश में सूचीबद्ध नहीं है करने के लिए अपने सकर्मक निर्भरता को हल।

यदि आप एक्लिप्स का उपयोग करते हैं, तो pom.xml खोलें और निर्भरता पदानुक्रम टैब देखें। आपके द्वारा घोषित कुछ पुस्तकालयों को संस्करण 3.1.0 के रूप में सूचीबद्ध किया जाएगा, लेकिन 3.0.6 की हल निर्भरता होगी। मेरे लिए, मेरे वसंत में संस्करण 3.1 के रूप में सूचीबद्ध वसंत-सुरक्षा-कॉन्फ़िगरेशन और वसंत-सुरक्षा-टैगलिब्स थीं, लेकिन उन्होंने वसंत-कोर और वसंत-अभिव्यक्ति जैसे 3.0.6 के रूप में निर्भरताओं को हल किया।

इसे हल करने के लिए, स्पष्ट रूप से अपने पोम में उच्चतम ट्रांजिटिव निर्भरताओं में से प्रत्येक को स्पष्ट रूप से सूचीबद्ध करें। उदाहरण के लिए, मैं मूल रूप से वसंत-सुरक्षा-कॉन्फ़िगरेशन पर गिनती कर रहा था ताकि वसंत-कोर को एक पारस्परिक निर्भरता के रूप में लाया जा सके, इसलिए मैंने अपने पोम में वसंत-कोर आर्टिफैक्ट की सूची नहीं बनाई। लेकिन इस मुद्दे को ठीक करने के लिए मैंने स्पष्ट रूप से वसंत-कोर (संस्करण 3.1.0) को शामिल करने के लिए अपना पोम बदल दिया। मैंने अपने पोम में हर संकल्प निर्भरता के लिए प्रत्यक्ष निर्भरताओं को जोड़ा जो पुराने संस्करण के लिए हल किया जा रहा था, और फिर यह काम किया!

उम्मीद है कि यह मदद करता है ...

+0

धन्यवाद! वसंत के लिए स्पष्ट रूप से परिभाषित आवश्यक निर्भरताओं और इस अपवाद को और भी नहीं! – whatswrong

0

यह java.lang.NoSuchMethodError के बारे में शिकायत और मुझे लगता है कि यह अपने वसंत निर्भरता से कोई लेना देना नहीं है। इस तरह अपने वसंत निर्भरता को बदलने का प्रयास करें:

<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> 

और एक अंतिम चीज जो मैं चाहता हूं कि आप विचार करें, क्या आपको वास्तव में उन सभी निर्भरताओं की ज़रूरत है?

+0

के साथ है, हे मदद के लिए धन्यवाद, मैं springframework संस्करण 3.0.6 का उपयोग कर समाप्त हुआ और त्रुटि चली गई। सहायता के लिए धन्यवाद। एफवाईआई जो सिर्फ एक परीक्षण वसंत था। Xml मेरी परियोजना mongoDB का उपयोग करेगी, इसलिए मुझे अधिकांश निर्भरताओं की आवश्यकता थी। –

0

जय सही है। उन्होंने जो कहा और org.springframework.beans से उत्पन्न त्रुटि के आधार पर, कहा गया प्रोजेक्ट के लिए अपने निर्भरता ग्राफ की समीक्षा करें और org.springframework.beans पर संक्रमणीय निर्भरताओं को छोड़कर किसी भी संस्करण विवादों को हल करें और स्पष्ट रूप से नवीनतम पर निर्भरता बताएं या org.springframework.beans का सही संस्करण।

वही अन्य निर्भरताओं के लिए किया जाना चाहिए, लेकिन यदि यह तोड़ नहीं है तो इसे ठीक न करें;) जब तक कि आप अपने ओसीडी को अपने जैसे नहीं पारित कर सकें।

मैंने परियोजना का चयन करके नेटबीन्स का लाभ उठाया, राइट क्लिक-> निर्भरता दिखाएं। एक बार निर्भरता ग्राफ दृश्य में, बीन्स के लिए खोजें। निर्भरता पर डबल क्लिक करें और संस्करण संघर्ष को हल करने के लिए राइट क्लिक करें जहां विंडो जैसे विज़ार्ड संघर्ष को हल करने के लिए अतिरिक्त कॉन्फ़िगरेशन प्रदान करेगा। केक का टुकड़ा!

धन्यवाद जय!

0

अपने पोम फ़ाइल को यह एक जोड़ने के लिए, मैं एक ही त्रुटि थी, लेकिन मैंने यह किया है, अब यह मेरे लिए काम करता है,

  <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> 

नोट: मैं पोम माता पिता, और पोम बच्चे, है और मैं अपने बच्चे की परियोजना का परीक्षण करना चाहता था, लेकिन मुझे त्रुटि मिली। एमवीएन परीक्षण .... इसलिए मैंने यह काम किया है। माता-पिता में

बिना संस्करण के और बच्चे के साथ। यह एक org.springframework तरह वसंत-सेम

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

यह प्रयास करें।

2

यदि ऊपर दिए गए समाधान काम नहीं कर रहे हैं, तो ग्रहण में प्रोजेक्ट -> गुण -> जावा बिल्ड पथ -> Librairies -> यदि "जुनीट 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) 

और पोम अद्यतन करने निश्चित रूप से समाधान नहीं था ...

+0

दुर्भाग्य से, त्रुटि के बाद भी त्रुटि अभी भी ... कोई सुझाव? – Johannes

+0

@ जोहान्स परियोजना को साफ/निर्माण करें, इसे बंद करें, फिर ग्रहण बंद करें और उन्हें फिर से खोलें। क्या आपने अन्य उत्तरों की कोशिश की है? अधिकांशतः यह एक निर्भरता मुद्दा है, इसलिए आपको यह जांचना होगा कि क्या वे ठीक तरह से हल किए गए हैं या नहीं। जांचें कि क्या आपके पास किसी अन्य प्रोजेक्ट पर निर्भरता नहीं है जो अभी भी जूनिट 4 का संदर्भ देती है। शायद ब्रेकपॉइंट डालें जहां त्रुटि पॉप अप हो और जांचें कि कौन सा जार वास्तव में उपयोग किया जाता है। – Asoub

+0

इस पर आपके लगातार ध्यान देने के लिए धन्यवाद। मैंने अपने पीओएम से सभी निर्भरताओं को हटाकर इस समस्या को हल करने में कामयाब रहे, और फिर उन्हें इंटेलिजे संकलक सुझावों से मेवेन के माध्यम से फिर से जोड़ दिया, और फिर इन जावा क्लास में इन नए जोड़े गए वर्गों को आयात किया। किसी भी तरह, समस्या इस तरह हल हो गई थी ... धन्यवाद साथी – Johannes

संबंधित मुद्दे