2014-09-10 2 views
0

우리는 applicationContext.xml을 생성 한 고전적인 Maven, Spring (3.1.1) 애플리케이션을 가지고있다.속성 자리 표시자를 누적하는 방법은 무엇입니까?

이 파일에서 우리는 클래스 파일에 외부 파일과 파일이있는 속성 자리 표시자를 선언했습니다. 여기에 다른 질문에서 발견 된 예가 있습니다.

<context:property-placeholder location="file:${ADMIN_HOME}/db.properties,classpath:configuration.properties" 
ignore-unresolvable="false" ignore-resource-not-found="false" /> 

작동 중입니다.

하지만 지금은 JUnit 테스트를위한 특정 설정 파일이 있습니다. 이 구성 파일에서 첫 번째 파일을 가져 와서 기본 선언이있는 테스트 용 속성 자리 표시자를 추가했습니다.

<import resource="applicationContext.xml" /> 

<context:property-placeholder location="classpath:configuration-test.properties" 
    ignore-unresolvable="false" ignore-resource-not-found="false" /> 

JUnit 테스트에서 configuration-test.properties의 값을 삽입했습니다.

@Value("${junit.user.login}") 
private String login; 

하지만 JUnit을 실행하면 오류가 발생합니다. "junit.user.login"키가 해결되지 않았습니다.

이유를 알 수 없습니다. 아이디어가 있으십니까?

감사합니다.

답변

2

junit이 올바른 스프링 컨텍스트를 시작합니까? 테스트 케이스에 올바른 xml 경로를 추가 했습니까?

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "/my-test-context.xml" }) 
public class TestCase{} 
+0

예. @RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration ("/ applicationContext-test.xml") public class DocumentServiceTest {} – MychaL

+0

주 구성 파일에 외부 파일을 추가하기 전에 문제가 없었습니다. 이 새로운 기능이 생길 때까지 모든 테스트가 진행되었습니다. 회귀를 만드는 "file : $ {ADMIN_HOME} /db.properties"를 추가하는 것이 사실입니다. – MychaL

+0

그런 경우 문제는 테스트를 실행할 때 봄에 알려지지 않은 $ {ADMIN_HOME}이 있다고 생각합니다. 추가로 테스트를 실행하려고 시도 할 수도 있습니다. -DADMIN_HOME = Nadir