복붙노트

[SPRING] Spring JUnit 테스트 오류

SPRING

Spring JUnit 테스트 오류

Spring JUnit 테스트를 실행하려고 할 때 다음 오류가 발생합니다. 나는 스프링 프레임 워크를 사용하여 JUnits를 만드는 것에 익숙해 지려고 노력하고있다.

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.hml :

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

오류:

스택 추적 :

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)

해결법

  1. ==============================

    1.스프링 3.0.6에서 3.1.0 릴리스로 업그레이드 할 때도 똑같은 문제가있었습니다. 해결책은 다음과 같습니다.

    스프링 3.0.6에서 3.1.0 릴리스로 업그레이드 할 때도 똑같은 문제가있었습니다. 해결책은 다음과 같습니다.

    종속성 중 일부는 3.1.0 버전으로 나열되지만 오류 메시지에 나열된 방법이없는 이전 버전과의 종속 종속성을 해결합니다.

    Eclipse를 사용하는 경우 pom.xml을 열고 종속성 계층 구조 탭을 확인하십시오. 선언 한 일부 라이브러리는 버전 3.1.0으로 나열되지만 3.0.6의 해결 된 종속성을 갖습니다. 필자는 spring-security-config와 spring-security-taglibs를 버전 3.1로 나열했지만 spring-core 및 spring-expression과 같은 종속성은 3.0.6으로 해결했습니다.

    이를 해결하려면 명시 적으로 가장 높은 전이 의존성을 명시 적으로 pom에 나열하십시오. 예를 들어, 원래 spring-security-config를 사용하여 전이 의존성을 봄 코어로 가져 왔으므로 스프링 코어 아티팩트를 내 pom에 나열하지 않았습니다. 하지만이 문제를 해결하기 위해 spring-core (버전 3.1.0)를 명시 적으로 포함하도록 pom을 변경했습니다. 이전 버전으로 해결 된 내 POM의 모든 해결 된 종속성에 대한 직접 종속성을 추가 한 다음 작동했습니다.

    희망이 도움이 ...

  2. ==============================

    2.위의 해결 방법이 효과가 없다면 eclipse의 잘못 일 수 있습니다. 이클립스에서 프로젝트 -> 속성 -> Java 빌드 경로 -> Librairies -> "Junit 4"가 있으면 제거하십시오.

    위의 해결 방법이 효과가 없다면 eclipse의 잘못 일 수 있습니다. 이클립스에서 프로젝트 -> 속성 -> Java 빌드 경로 -> Librairies -> "Junit 4"가 있으면 제거하십시오.

    나는이 stacktrace가 있었다 :

    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을 업데이트하는 것이 해결책이 아니 었습니다 ...

  3. ==============================

    3.제 경우에는 의존성이 하나뿐이었고 junit-dep와 junit은 하나였습니다. junit-dep를 제거하면 모든 것이 정상입니다.

    제 경우에는 의존성이 하나뿐이었고 junit-dep와 junit은 하나였습니다. junit-dep를 제거하면 모든 것이 정상입니다.

  4. ==============================

    4.그것은 java.lang.NoSuchMethodError에 대해 불평하고 이것이 스프링 의존성과 관련이 있다고 생각합니다. 다음과 같이 봄 의존성을 변경해보십시오.

    그것은 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>
    

    그리고 나는 다음의 의존성이 어디에서 왔는지 모르지만, 그것들은 그들의 유물과 함께 수정이 필요하다고 생각합니다.

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

    그리고 마지막으로 제가 여러분에게 고려해주기를 바라는 것, 정말로 그러한 의존성이 모두 필요합니까?

  5. ==============================

    5.Jay는 맞습니다. 그가 말한 것과 org.springframework.beans에서 비롯된 오류를 기반으로, org.springframework.beans에 대한 전이 의존성을 배제하고 최신 또는 올바른 버전에 대한 의존성을 명시하여 해당 프로젝트의 종속성 그래프를 검토하고 버전 충돌을 해결하십시오 org.springframework.beans.

    Jay는 맞습니다. 그가 말한 것과 org.springframework.beans에서 비롯된 오류를 기반으로, org.springframework.beans에 대한 전이 의존성을 배제하고 최신 또는 올바른 버전에 대한 의존성을 명시하여 해당 프로젝트의 종속성 그래프를 검토하고 버전 충돌을 해결하십시오 org.springframework.beans.

    다른 종속성에 대해서도 동일한 작업을 수행해야하지만, 파손되지 않은 경우에는 수정하지 마십시오.) OCD를 전달할 수없는 경우가 아니면 자신과 같습니다.

    프로젝트를 선택하고 오른쪽 클릭 -> 종속성 표시를 선택하여 Netbeans를 활용했습니다. 종속성 그래프보기에서 Beans를 검색하십시오. 종속성을 두 번 클릭하고 마우스 오른쪽 버튼으로 클릭하여 버전 충돌을 해결합니다. 여기서 마법사와 같은 창에서는 충돌을 해결하기위한 추가 구성을 제공합니다. 케이크 한 조각!

    고마워요 Jay!

  6. ==============================

    6.이 파일을 pom 파일에 추가하십시오, 나는 똑같은 오류가 있었지만, 나는 이것을했습니다, 지금 그것은 나를 위해 일합니다.

    이 파일을 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 자녀가 있습니다. 자녀 프로젝트를 테스트하고 싶었지만 오류가 발생했습니다. mvn 테스트 .... 그래서 나는이 일을했다. 부모님.

    버전없이 아이없이. 이 같은                      org.springframework             봄 콩

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

    시도 해봐.

  7. from https://stackoverflow.com/questions/8237181/spring-junit-test-error by cc-by-sa and MIT license