관리 메뉴

nalaolla

JUnit 테스트 시 Spring 구동 및 Autowired하는 방법 본문

기타(개발관련)

JUnit 테스트 시 Spring 구동 및 Autowired하는 방법

날아올라↗↗ 2017. 2. 28. 14:00
728x90

서론

프로그램을 작성하면서 단위테스트를 진행하는 것은 견고한 프로그램을 만듬에 있어서 상당히 중요하다. 기본적으로 JUnit은 Spring과 함께 동작하지 않기 때문에 Spring Test를 이용해서 테스트를 진행하고자 하는 Class와 연결을 시켜주어야 한다. 

이번 포스팅에서는 JUnit과 Spring을 연동하는 법에 대해서 기록한다.

이 글을 쓰는 시점에서의 Spring버전은 4.3.4.RELEASE, JUnit 버전은 4.1.2.RELEASE이다.


Spring Test에서 제공하는 어노테이션을 추가하여 JUnit Test Class만들기

JUnit Test Class를 스프링으로 구동을 하려면 Spring Test에서 제공하는 어노테이션과 SpringJUnitClassRunner.class를 사용해서 연결할 수 있다. 또한 xml 파일로 설정을 진행 했다고 가정하여 글을 작성 하였다. 아래는 어노테이션 설정방법에 대한 내용이다.


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:config/spring-config-root.xml","file:src/main/webapp/WEB-INF/dispatcher-servlet.xml"})

@RunWith어노테이션은 SpringJUnit4ClassRunner에 대한 정보를 담고 있고 @ContextConfiguration은 xml로 설정된 스프링 설정 정보파일 위치들을 나열 할 수 있게 된다. xml파일이 webapp 디렉토리 하위에 존재하는 것은 file로 시작하는 경로를 생성해주고 classpath하위에 있는 설정파일은 classpath로 시작하는 경로를 생성해주면 된다.

public class ApiIntercepterextends HandlerInterceptorAdapter {
    private final Logger logger =  LoggerFactory.getLogger(ApiIntercepter.class);
    @Autowired
    private ApplicationContext appCxt;
    @Autowired
    private ServletContext servletContext;
}

또한 위와 같이 ServletContext가 Project 어디든 @Autowired형태로 존재하게 되면 JUnit과 동작하는 Spring에서는 오류를 발생하게 되는데 그 이유가 ServletContext에 대한 정보가 생성되지 않기 때문이다. 그래서 이러한 문제점을 해결하기 위해서 @ContextConfiguration에 설정파일로 등록한 파일에 아래와 같은 MockServletContext Bean을 등록해주어야 한다. 

<beanclass="org.springframework.mock.web.MockServletContext"/>

여기서 또 하나 중요한 점은 Spring Project 생성시 Spring Test 프로젝트 Scope가 test로 되어 있는데 이것에 의해 서버 구동시 MockServletContext Class를 찾을 수 없다는 에러 메시지를 볼 수 있으므로 주의가 필요하다.


결론

스프링 단위 테스트를 하기 위해서 어떻게 설정을 하는지 알아 보았다. 좀 더 견고한 프로그램을 작성하기 위한 작은 첫걸음이다.



출처: http://jodu.tistory.com/10 [Program Development]


728x90

'기타(개발관련)' 카테고리의 다른 글

java 자료 경로  (0) 2018.08.16
JUnit을 이용한 단위 테스트  (0) 2017.12.28
이클립스 UML Plugin Papyrus 설치  (0) 2016.07.14
Intellij spring MVC + maven 환경 구축  (3) 2016.07.14
ERWin 설정  (0) 2016.07.12