2017-01-19 4 views
1
프로젝트에서 내 폴더 구조는

: 자산이 같은 폴더에서로드 파일

./assets/strings.properties 
./module1/src/main/java/{some-packages}/ContextConfig.java 
./module1/src/test/java/{some-packages}/TestContextConfig.java 
./module1/pom.xml 
./module2/pom.xml 
./pom.xml 

ContextConfig에서 나는 일부 속성을 파일을로드 : 나는 classpath:를 사용하지 않는

@PropertySources({ 
     @PropertySource("file:assets/strings.properties") 
}) 
public class ContextConfig { 
/*some code...*/ 
} 

공지 사항 하지만 file:

ContextConfig를 가져올 때 다음과 같이 임베디드 몽고를 활성화합니다.

@Configuration 
@Import({ 
     ContextConfig.class, 
     MongoAutoConfiguration.class 
}) 
public class TestContextConfig { 
} 

내 테스트 클래스에서 사용하려고는 :이 등록 정보 파일을 찾을 수 없기 때문에

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes = TestContextConfig.class) 
public class ProofOfConcept { 
/*some code...*/ 
} 

나는 FileNotFoundException이를 얻을 수 있지만, 응용 프로그램 (안 테스트에서) 정상적으로 시작되면 모든 것이 잘 작동한다. 예외 내가 얻을 :

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [{some-packages}.config.TestContextConfig]; nested exception is java.io.FileNotFoundException: assets\strings.properties (System nie może odnaleźć określonej ścieżki) 
    at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:495) 
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:276) 

어떻게 테스트에서 자산 폴더에서 파일을로드 할 수 있습니까?

답변

1

속성은 파일 -

./assets/strings.properties 

이 테스트 문맥 것으로 나타나고있다. 애플리케이션의 외부 속성 파일을로드하는 기법을 사용해야합니다.

Spring application context external properties?을 참조하십시오. 이렇게하면 문제가 해결됩니다. 속성 파일 위치를 VM 인수로 제공하거나 테스트에서 하드 코딩 할 수 있습니다. VM 속성을 사용하여이 속성을 제공하는 것이 좋습니다.

+0

다행히 문제가 해결되었습니다! – asg