본문 바로가기
프로그래밍/스프링프레임워크

전자정부 표준프레임워크 - JUnit 4 Test Case 생성하기

by pentode 2018. 4. 12.

전자정부 표준프레임워크 Portal 템플릿 사이트에 컨트롤러를 테스트하기 위한 테스트 케이스를 추가해 보겠습니다.



1. src/test/java 폴더에 테스트 케이스가 들어갈 패키지를 생성합니다. 이 예제에서는 com.tistory.pentode.test로 만들었습니다.


2. 위에서 만들 패키지에 마우스 오른쪽 키를 눌러 New -> JUnit Test Case를 실행합니다.





3. Junit Test Case 생성창에서 클래스명을 ControllerTest 라고 입력하고 Finish 버튼을 누릅니다.




4. JUnit 4 라이브러리를 build path 에 추가할지 물어 봅니다. "Perform the following action"을 선택해서 빌드 패스에 추가합니다. "OK" 버튼을 누릅니다.




5. pom.xml 파일에 spring-test 의존성을 추가합니다. 스프링프레임웍의 테스트를 위해서 필요한 다음 클래스들을 사용하기 위해서 입니다. <scope>test</scope> 를 적용해서 테스트시에만 사용되도록 합니다.


org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

org.springframework.test.context.ContextConfiguration;

org.springframework.test.context.web.WebAppConfiguration;

org.springframework.test.web.servlet.setup.MockMvcBuilders;

 

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.1.9.RELEASE</version>
    <scope>test</scope>
</dependency>

 

6. pom.xml 파일에 javax.inject 의존성을 추가합니다. @Inject 애너테이션에 필요합니다. javax.inject.Inject 클래스 입니다. 역시 <scope>test</sceop>를 사용합니다.

 

<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
    <scope>test</scope>
</dependency>

 

7. 다음과 같이 테스트 케이스를 작성합니다.

 

package com.tistory.pentode.test;

import javax.inject.Inject;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "file:src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml",
    "file:src/main/resources/egovframework/spring/com/*.xml"}
)
@WebAppConfiguration
public class ControllerTest {
    @Inject
    private WebApplicationContext wac;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
    }

    @Test
    public void test() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.get("/cmm/main/mainPage.do"));
    }
}

 

스프링 컨텍스트를 로드하고, WAS 없이 웹 애플리케이션을 테스트하도록 해줍니다.

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
    "file:src/main/webapp/WEB-INF/config/egovframework/springmvc/egov-com-servlet.xml",
    "file:src/main/resources/egovframework/spring/com/*.xml"}
)
@WebAppConfiguration

 

8. ControllerTest 클래스에 마우스 오른쪽 키를 누르고 Run As -> JUnit Test 를 실행합니다.




9. 실행 결과 입니다.





이것으로 전자정부 표준프레임워크에서 JUnit 4 를 사용해서 컨트롤러를 테스트하는 테스트 케이스를 생성하고 실행해 보았습니다.



※ 참고


- Spring Security 관련해서 애너테이션을 찾지 못할때는 다음 의존성을 추가합니다.

 

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.2-b01</version>
    <scope>test</scope>
</dependency>

 

- Portal 사이트 템플릿은 서블릿 2.5 스펙으로 작성되어 있습니다. 테스트에서 서블릿 3.1 이 필요하다면 다음 의존성을 추가합니다.

 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>test</scope>
</dependency>


반응형