본문 바로가기

IT for developer/Spring

JUnit4 & Spring


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"));

}

}