programing

자바 프로젝트:ApplicationContext를 로드하지 못했습니다.

shortcode 2023. 9. 20. 21:00
반응형

자바 프로젝트:ApplicationContext를 로드하지 못했습니다.

간단한 JUNIT 테스트 케이스를 작성하는 Java Project가 있습니다.applicationinoContext.xml 파일을 root java source 디렉토리에 복사했습니다.StackOverflow에서 읽은 몇 가지 권장 설정으로 시도해 보았지만 여전히 동일한 오류가 발생합니다.제 프로젝트가 웹 프로젝트가 아닌 자바 프로젝트이기 때문에 이 오류가 발생하는 것입니까, 아니면 그게 중요합니까?어디가 잘못되었는지 잘 모르겠습니다.

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"C:/projs/sortation/src/main/java/applicationContext.xml"})
// Also tried these settings but they also didnt work,
//@ContextConfiguration(locations={"classpath:applicationContext.xml"})
//@ContextConfiguration("classpath:applicationContext.xml")
@Transactional
public class TestSS {

    @Autowired
    private EmsDao dao;

    @Test
    public void getSites() {

        List<String> batchid = dao.getList();

        for (String s : batchid) {
            System.out.println(s);
        }
    }
}

maven을 사용하는 것 같습니다(src/main/java). 이 경우에는.applicationContext.xml줄을 늘어놓다src/main/resources디렉토리 입니다.클래스 경로 디렉토리에서 복사되며 다음을 사용하여 액세스할 수 있어야 합니다.

@ContextConfiguration("/applicationContext.xml")

Spring-Documentation에서:일반 경로(예: "context.xml")는 테스트 클래스가 정의된 패키지의 클래스 경로 리소스로 처리됩니다.슬래시로 시작하는 경로는 "/org/example/config.xml"과 같이 정규화된 클래스 경로 위치로 처리됩니다.

따라서 클래스 경로의 루트 디렉터리에 있는 파일을 참조할 때 슬래시를 추가하는 것이 중요합니다.

절대 파일 경로로 작업하는 경우 'file:C:...'를 사용해야 합니다(설명서를 제대로 이해했다면).

저도 같은 문제가 있었고 테스트를 위해 다음 플러그인을 사용하고 있었습니다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <useFile>true</useFile>
        <includes>
            <include>**/*Tests.java</include>
            <include>**/*Test.java</include>
        </includes>
        <excludes>
            <exclude>**/Abstract*.java</exclude>
        </excludes>
        <junitArtifactName>junit:junit</junitArtifactName>
        <parallel>methods</parallel>
        <threadCount>10</threadCount>
    </configuration>
</plugin>

IDE(식각 sts)에서 테스트가 정상적으로 실행되고 있었지만 명령 mvn 테스트를 사용할 때 실패했습니다.

많은 시행착오 끝에 해결책은 위의 플러그인 구성에서 다음과 같은 두 줄의 병렬 테스트를 제거하는 것이라고 생각했습니다.

    <parallel>methods</parallel>
    <threadCount>10</threadCount>

이것이 누군가를 도와주기를 바랍니다!

이 문제에 직면한 이유는during bootstrapping my spring project구현하는 클래스를 사용하여ApplicationListener<ContextRefreshedEvent>그리고 안으로onApplicationEvent함수가 예외를 던집니다.

따라서 애플리케이션 부트스트랩 포인트가 어떤 예외도 발생시키지 않도록 해야 합니다.

제 경우에는 테스트를 위해 maven surefire plugin을 사용하고 있었으므로 테스트 프로세스를 디버깅하기 위해 이 명령을 사용합니다.

mvn -Dmaven.surefire.debug test

저는 이 문제에 직면했고, 그 때 Bean(@Bean)이 테스트 클래스에서 정확한 매개 변수가 주어지지 않아 제대로 인스턴스화되지 않았습니다.

언급URL : https://stackoverflow.com/questions/5058294/java-project-failed-to-load-applicationcontext

반응형