test 폴더에서 수행
작성한 package와 동일하게 경로를 맞춰서 폴더 생성
MenuMapperTests 클래스 생성
@SpringBootTest
스프링부트의 테스트환경을 사용한다는 어노테이션
@ContextConfiguration(calsses = {Chap02CrudApplication.class})
어플리케이션 설정을 해당 설정 파일에서 가져오겠다는 의미
@Autowired
*의존성을 자동으로 주입해달라는 어노테이션
private MenuMapper menuMapper;
@Test
*test할 메소드 위에 붙여주어야함
public void 매퍼인터페이스의존성주입테스트(){
assertNotNull(menuMapper);
*전달하고 있는 값이 NotNull인지 확인하는 assertNotNull
}
*기능 테스트
pubilc void 전체메뉴조회용매퍼테스트(){
//given(인풋 데이터가 잇을 때)
//when
List<MenuDTO> menuList = menuMapper.findAllMenu();
//then
assertNotNull(menuList);
System.out.println(menuList);
}
-> 오류가 없다면 콘솔창에 값이 잘 담겨 나온다
@SpringBootTest
@ContextConfiguration(calsses = {Chap02CrudApplication.class})
@Autowired
private MenuService menuService;
@Test
public void 전체메뉴조회용서비스메소드_테스트(){
//given
//when
List<MenuDTO> menuList = menuService.findAllMenu();
//then
assertNotNull(menuList);
System.out.println(menuList);
}
*웹 어플리케이션을 어플리케이션 서버에 배포하지 않고도 Spring Web의 동작을 재현할 수 있는 클래스
즉, WAS의 구동없이 Controller에 Request를 만들어 날리는 테스트 로직을 수행할 수 있다.
@Test
public void 전체메뉴조회용서비스메소드_테스트(){
//given
//when & then
mockMvc.perform(MockMvcRequestBuilders.get("/menu/list"))
.andExpect(MockMvcResultMatchers.status().isOk());
.andExpect(MockMvcResultMatchers.forwardedUrl("/menu/list"));
.andDo(MockMvcResultHandlers.print());
}