2014-01-05 2 views
0

내가 스프링 프레임 워크를 사용하여 발생 2.5.6 나는이 내 원격 데이터베이스에 연결하기 위해 사용하는 내 봄-beans.xml 환경 파일에 정의 된 다음은 dataSource :은 dataSource 주입 예외

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 

    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/sample"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 

</bean> 

이 내 JUnit을 통합 테스트와 같은 모습입니다 : 내가 같은 패키지에 봄-beans.xml 환경 파일을 복사 한

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = "spring-beans.xml") 
public class MyIntegrationTest { 

    @Autowired 
    DataSource dataSource; 

} 

어디 상주 업로드 한 테스트 케이스 코드입니다. 왜 이런 일이 될 수

SEVERE: Caught exception while allowing TestExecutionListener [org.springframewor[email protected]9a8d9b] to prepare test instance [[email protected]] 
java.lang.IllegalStateException: Failed to load ApplicationContext 
at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:201) 
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) 
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) 
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:111) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:148) 
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61) 
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:54) 
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:52) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:97) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
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) 


Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [tests/spring-beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [tests/spring-beans.xml] cannot be opened because it does not exist 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:81) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42) 
    at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:197) 
    ... 17 more 


Caused by: java.io.FileNotFoundException: class path resource [tests/spring-beans.xml] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:143) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 
    ... 26 more 

모든 아이디어 : 제가 테스트 케이스를 실행할 때

그러나 나는 다음과 같은 예외가?

+0

test라는 디렉토리에서 xml 파일을 찾고 찾지 못했습니다. 테스트 디렉토리는 생각하는 위치가 아닌 곳에 있어야합니다. – Julian

답변

0

소스 코드가있는 패키지가 아닌 spring-beans.xml을 클래스 경로에 넣어야합니다.

빌드 할 때 Maven 또는 Gradle을 사용하는 경우 src/test/resources에 파일을 넣으십시오.

그렇지 않은 경우 아무 곳에 나 놓고 수동으로 테스트 픽스처 설정에 FileSystemXmlApplicationContext으로로드하십시오.

+0

이 코드를 setUpBeforeClass : ApplicationContext 컨텍스트 = new FileSystemXmlApplicationContext ("/ src/main/resources/spring-beans.xml")에 작성했습니다. 그러나 컨텍스트 변수를 사용하여 @Autowired DataSource dataSource에서 데이터를로드하는 방법은 무엇입니까? – SteveSt

0

Maven을 사용하는 경우 src/test/resources 폴더를 사용해야합니다. Maven은 테스트를 실행하는 동안 그것을 복사 할 수 있습니다.

+0

나는 maven을 사용 중입니다. 그러나 테스트는 src/test/java 폴더에는 없지만 다른 폴더에서는 src/main/java를 insinde합니다. 나는 src/main/resources 폴더를 사용하지만 여전히 찾지 못한다. – SteveSt