2016-06-22 2 views
1

JUnit에서 spring-test를 사용하여 테스트 메소드과 관련된 등록 정보 파일을 읽는 가장 좋은 방법은 무엇입니까? 다음 빈은 예시 메소드 레벨을 검색 할 의도, 다음 클래스 수준은 다음 패키지 레벨은 다음 루트 수준의 속성 파일 :JUnit + spring-test를 사용하여 메소드 레벨 속성 읽기


<bean name="properties" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer" > 
    <property name="locations"> 
     <list> 
      <value>classpath:properties.xml</value> 
      <value>classpath:*/properties.xml</value> 
      <value>classpath:*/*/properties.xml</value> 
      <value>classpath:*/*/*.properties.xml</value> 
     </list> 
    </property> 
</bean> 

내가/하위 클래스 PropertySourcesPlaceholderConfigurer 또는 SpringMethodRule를 사용하여 생각했습니다, 그러나 지금까지는 생존력도없고 우아한 해결책도 나에게 일어나지 않았습니다. 스프링 테스트가 유망한 클래스 수준 주석의 다양성을 제공하지만, 걸림돌은 내가하는 방법 특정 파일을 찾을 수 있도록하려는 것입니다, 예를 들면 :

classpath:myPackage/myClass/myMethod.properties.xml 
+0

는 "방법 특정 파일을 찾을 수 있도록하려면"? 스프링'ApplicationContext' 자체는 테스트 메소드에 대해 아무것도 모르고 있으며, Spring TestContext Framework는 테스트 메소드마다 ApplicationContext 테스트를로드하는 것을 지원하지 않습니다. 그렇다면 어디에서 어떻게로드 할 계획입니까? –

+0

내 테스트에는 http://www.alexcollins.com/tutorial-junit-rule과 같은 'SpringContextRule'이 있습니다. 내 테스트에는 테스트 클래스 및 테스트 메소드의 이름에 대한 액세스를 제공하는 http://junit.org/junit4/javadoc/4.12/org/junit/rules/TestName.html을 기반으로하는 다른 규칙이 있습니다. –

+0

각 테스트 메소드에 대해, 관례에 따라 메서드 이름을 따라 명명 된 속성 파일이 있습니다. 'foo.properties.xml', 'bar.properties.xml'. 'foo'및 'bar'는 테스트 메소드 이름입니다. –

답변

0

당신은 단지 알고리즘을 찾고 있다면은 현재 메서드를 기반으로 클래스 패스 리소스를 찾는 데 도움이되며 Spring TestContext FrameworkServletTestExecutionListener에서 영감을 얻을 수 있습니다. 구체적으로는 detectDefaultScript() 메서드입니다.

감사합니다,

(스프링 TestContext 프레임 워크의 저자) 당신이 무엇을 의미합니까

+0

나는 한 번 봐보고 피드백을 보내 줄 것이다. 고맙습니다! –