@SprintBootTest 이용한 제어기 테스트
Prof. Jong Min Lee이(가) 14일 전에 추가함
JUnit5 이용하여 테스트 케이스 만들 때 @SprintBootTest와 @AutoConfigureMockMvc를 애노테이션으로
사용하면 제어기에 대한 테스트도 쉽게 할 수 있습니다.
아래 코드는 첨부한 프로젝트의 SystemControllerTest.java에 있는 코드 일부로 참고하기 바랍니다.
@Test
@DisplayName("/login 테스트: id와 암호가 정상인 경우")
public void testLogin2() throws Exception {
System.out.println("\n\n===> login2");
// 실행
MvcResult result = mvc.perform(post("/login")
.param("id", "admin")
.param("password", "admin"))
// .andDo(print())
.andExpect(status().isOk())
.andReturn();
// 뷰 이름 확인: @GetMapping, @PostMapping의 return 값
String viewName = result.getModelAndView().getViewName();
assertTrue(viewName != null);
assertEquals("main", viewName);
// 모델 값 확인
Map<String, Object> model = result.getModelAndView().getModel();
assertTrue(model != null);
String userId = (String) model.get("user_id");
assertTrue(userId != null);
assertTrue(userId.equals("admin"));
}
@Test
@DisplayName("/login 테스트: id와 암호가 틀린 경우")
public void testLogin3() throws Exception {
System.out.println("\n\n===> login3");
// 실행
MvcResult result = mvc.perform(
post("/login")
.param("id", "admin")
.param("password", "***"))
// .andDo(print())
.andExpect(status().isOk())
.andReturn();
// 뷰 이름 확인: @GetMapping, @PostMapping의 return 값
String viewName = result.getModelAndView().getViewName();
assertTrue(viewName != null);
assertEquals("fail", viewName);
// 모델 값 확인
Map<String, Object> model = result.getModelAndView().getModel();
assertTrue(model != null);
String failReason = (String) model.get("fail_reason");
assertTrue(failReason != null);
assertTrue(failReason.contains("틀립니다"));
}
@Test
@DisplayName("/misc 테스트")
public void testMisc() throws Exception {
System.out.println("\n\n===> misc");
// 실행
MvcResult result = mvc.perform(
get("/misc")
.header("user-agent", "123")
.param("name", "홍길동")
.sessionAttr("loginSuccess", "true"))
.andDo(print())
.andExpect(status().isFound())
.andReturn();
// 뷰 이름 확인: @GetMapping, @PostMapping의 return 값
String viewName = result.getModelAndView().getViewName();
assertTrue(viewName != null);
assertEquals("redirect:/misc1", viewName);
// 모델 값 확인
// Map<String, Object> model = result.getModelAndView().getModel();
// assertTrue(model != null);
// String browser = (String)model.get("browser");
// assertEquals("misc1: 123", browser);
// RedirectAttribute 값 확인
FlashMap map = result.getFlashMap();
// System.out.println(">>>>>>> map = " + map);
String browser = (String) map.get("browser");
// 세션 값 확인
String isOK = (String) result.getRequest().getSession().getAttribute("isOK");
assertTrue(isOK != null);
assertEquals("true", isOK);
}
demo.zip (24.5 KB)