2017년 9월 3일 일요일

단위테스트 JUnit

  <!-- Test -->
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.9</version>
   <scope>test</scope>
  </dependency>

  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>${org.springframework-version}</version>
  </dependency>


파일: src/main/java/  - com.ds.web - HomeController.java

package com.ds.web;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HomeController {

 private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

 @RequestMapping(value = "/", method = RequestMethod.GET)
 public String home(Locale locale, Model model) {
  logger.info("Welcome home! The client locale is {}.", locale);
 
  Date date = new Date();
  DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
 
  String formattedDate = dateFormat.format(date);
 
  model.addAttribute("serverTime", formattedDate );
 
  return "home";
 }
 @RequestMapping(value = "/p", method = RequestMethod.POST)
 public String p(@RequestParam("no")int no ,Model model) {
  System.out.println(no);
  model.addAttribute("list", "abc");
  return "redirect:/";
 
 }

}

파일: src/test/java/  - com.ds.web - HomeControllerTest

package com.ds.web;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
public class HomeControllerTest {
 private MockMvc mvc = null;

 @Before
 public void setup() {
  mvc =
   MockMvcBuilders.standaloneSetup(new HomeController()).build();
 }
  //테스트하기전 테스트를 할 컨트롤러 객체 생성

 @Test
 public void test() throws Exception {
  MockHttpServletRequestBuilder p
   = post("/p").param("no", "1");
  mvc.perform(p)
  .andDo(print())
  .andExpect(status().is3xxRedirection())
  .andExpect(model().attributeExists("list"));
  //get방식으로 호출하면 serverTime의 attribute값이 존재해야함.
        mvc.perform(get("/"))
        .andDo(print())
        .andExpect(status().is2xxSuccessful())
        .andExpect(model().attributeExists("serverTime"));
       
 }
}

댓글 없음:

댓글 쓰기