JUnit 테스트 코드를 작성하다 보면 스프링에 의존성이 생기는 경우가 있다.
이럴 때 스프링 테스트 컨텍스트 프레임워크를 사용하여 스프링 컨테이너를 초기화 한 후 테스트를 진행하게 된다.
다음의 테스트 코드가 스프링 테스트 컨텍스트 프레임워크를 사용한 코드이다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/spring.xml"})
public class SpringBeanLoadingTest {
@Resource
private String namkyu;
@Test
public void test() {
// src/main/resource/spring.xml
// assertThat(namkyu, is("namkyu"));
// src/test/resource/spring.xml
assertThat(namkyu, is("test_namkyu"));
}
}
src/main/resource/spring.xml
<bean id="namkyu" class="java.lang.String">
<constructor-arg index="0" value="namkyu" />
</bean>
src/test/resource/spring.xml
<bean id="namkyu" class="java.lang.String">
<constructor-arg index="0" value="test_namkyu" />
</bean>
이와 같이 코드를 작성한 후 @ContextConfiguration 애노테이션의 location에 추가한 /spring.xml 스프링 메타 설정 파일은 src/test/resource 패키지에 넣었다.
꼭 test 패키지 하위에 설정 파일을 추가해 줘야지만 JUnit에서 설정 파일을 읽어 들일 수 있다고만 생각했다.
헌데 팀 동료로부터 그곳에 설정 파일을 안 넣어도 src/main/resource 패키지 안에 있는 설정 파일을 읽어 들일 수 있다는 것이다.
설마하는 마음에 테스트를 진행해 보았는데 읽!어!들!인!다!
위의 테스트 코드가 실행이 되면 가장 먼저 test 패키지 하위의 spring.xml 파일을 찾는다. 만약 설정 파일이 존재하지 않으면 main 패키지 하위에서 spring.xml 파일을 찾게 되는 것이였다.
메이븐을 공부할 때 test 패키지 하위에만 설정 파일이 있는 것을 봐왔던 것 때문에 그런 것인지 모르겠지만 무조건 그 안에 있어야만 동작 가능하다라는 닫힌 생각을 가지고 있었던 것 같다.
'프로그래밍' 카테고리의 다른 글
javascript self closing 문제 (2) | 2014.04.16 |
---|---|
Spring MappingJacksonJsonView modelKey가 하는 역할 (0) | 2014.03.15 |
JUnit private method test (0) | 2014.03.04 |
제너릭 메소드 (0) | 2014.03.01 |
jackson JSON 사용 중 UnrecognizedPropertyException 발생 시 (2) | 2014.02.15 |
spring security ajax session timeout 체크 방법 (1) | 2014.01.08 |
Ant style pattern 정리 (399) | 2014.01.06 |
spring mvc:resources를 이용한 정적 리소스 캐쉬 문제 해결 방안 (0) | 2014.01.02 |