spring 테스트 시 이클립스의 Templates 기능을 사용하면 훨씬 편리하게 테스트를 할 수 있다.
예를 들어서 스프링의 테스트 컨텍스트를 생성할 때 우리는 항상 @RunWith, @ContextConfiguration 애노테이션을 추가한다.
매번 테스트 클래스를 생성할 때마다 복사해서 붙여 넣는 것도 귀찮고, 그렇다고 타이핑하기에는 시간이 아깝다.
그럼 이런 반복적인 작업을 어떻게 하면 개선할 수 있을까?
그 방법은 자동화할 수 있는 툴을 적극적으로 이용하는 것이다.
그래서 난 이클립스의 Templates을 이용하여 이런 반복적인 작업을 단순화 시켰다. (예전 스터디 모임에서 어느 분이 알려주신 방법이다.)
가령 class 선언부의 위쪽에 커서를 놓은 후 springtest 라고 입력하고, ctrl + space를 누르면 아래와 같은 코드 템플릿이 자동으로 추가가 되는 것이다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“/test-application-context.xml”})
다음은 템플릿을 등록하는 방법이다.
Preferences > Java > Editor > Templates 이동 후 New
Name: springtest 입력
Pattern: 아래 코드 입력
${:import(‘org.junit.runner.RunWith’,’org.springframework.test.context.ContextConfiguration’,’org.springframework.test.context.junit4.SpringJUnit4ClassRunner’)}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“/test-application-context.xml”})
이 기능을 이용하여 여러 가지 템플릿을 만들어 놓으면 편리하다.
난 JUnit 테스트 메소드를 생성해 주는 템플릿도 등록해 놓았다.
@${testType:newType(org.junit.Test)}
public void ${specDescription}() {
${is1:importStatic(‘org.hamcrest.CoreMatchers.*’)}
${is2:importStatic(‘org.junit.Assert.*’)}
}
위의 템플릿은 아래와 같은 코드를 생성해 준다. (빨간색 부분)
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
public class UserControllerTest {
@Test
public void specDescription() {
}