본문 바로가기
프로그래밍

JUnit 테스트 실행 시 src/test/resource 패키지의 설정 파일만 읽어 들일까?

by 탁구치는 개발자 2014. 2. 25.

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 패키지 하위에만 설정 파일이 있는 것을 봐왔던 것 때문에 그런 것인지 모르겠지만 무조건 그 안에 있어야만 동작 가능하다라는 닫힌 생각을 가지고 있었던 것 같다.