전자정부 표준프레임워크 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>
'프로그래밍 > 스프링프레임워크' 카테고리의 다른 글
스프링프레임웍 - Tomcat에서 POST/GET 데이터 인코딩 설정 (0) | 2018.04.17 |
---|---|
전자정부 표준프레임워크 - dataSource (DBCP) 설정하기 (0) | 2018.04.17 |
스프링 빈(bean) 및 서블릿(servlet) 객체 직접 얻기 (2) | 2018.04.12 |
스프링프레임웍 - Ajax 통신(@RequestBody, @ResponseBody) (8) | 2018.04.09 |
스프링프레임웍 - Spring Security(3) : 사용자/권한 정보 DB사용하기 (15) | 2018.04.09 |