MySQL 설치중이라서 다음단계를 해보기전에 스프링에서는 작성한 프로그램을 어떻게 테스트하는지 살펴보자.
이는 책 toby spring 3 15장에 자세히 기술되어 있다.
여기서는 JUnit4를 이용해 간단하게 테스트하는 프로그램을 작성해 볼 것이다.
JUnit4 부터는 특정 클래스를 상속하지 않아도 테스트 코드를 작성할 수 있다.
@Test라는 애노테이션만 붙여주면 메소드가 속한 클래스는 테스트 클래스가 된다.
public class Test1 {
@Test public void testMethod1() {..}
}
테스트 클래스에서 스프링의 빈클래스를 가져오려면 다음과 같은 에노테이션을 새롭게 지정해야한다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("컨텍스트 파일")
이전 예제에서 MyServiceImpl을 테스트하기 위하여 다음과 같이 테스트 코드를 작성해야 한다. 우선 Context 설정 파일 (controlls.xml, servlet-context.xml 파일을 src/test/resources 폴더에 복사한다. 그리고 pom.xml 파일에 다음과 같은 dependency를 추가하자.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<scope>test</scope>
</dependency>
TestMyService.java
package sample.mvc.first;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.hamcrest.CoreMatchers.*;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:servlet-context.xml")
public class TestMyService {
@Autowired MyService myService;
@Test
public void testMyService() {
Assert.assertThat(myService.getUser("inking007").getEmail(), is("inking007@gmail.com"));
}
}