📖 학습내용
- MVC CRUD Mapper Test
- MVC CRUD Service Test
- MVC CRUD Controller Test
1. MVC CRUD Mapper Test
Create, Read, Update, Delete를 Mapping이 되었는지 확인하기 위해 각 Mapper를 JUnit으로 Test
- 연동테스트를 위해 DB에 테이블 생성 및 더미 데이터 추가
- 데이터를 추가한 후 commit을 꼭 해야한다.
영속 계층 구현
- 테이블 컬럼 구조 반영 VO 클래스 생성
- Mybatis의 Mapper 인터페이서 작성 및 XML
- 작성한 인터페이스 테스트
- DB에서 생성한 객체를 담을 수 있도록 도메인 객체를 위와 같이 생성
- Mybatis와 연동하기 위해 mapper 패키지를 scan 하기위해 위와 같이 작성
- SQL과 Mapping할 메소드들을 인터페이스로 선언
- 인터페이스에서 선언한 메소드와 같은 id로 선언하고 쿼리문 작성
<![CDATA[...]]>
는 쿼리문의 부등호를 사용하기 위해 사용
- JUnit으로 Mapping이 잘되었는지 Test
Create Test
- insert만 처리되고 PK를 알 필요가 없는 경우
- insert문이 실행되고 생성된 PK를 알아야 하는 경우
- 1번 방법인 기본 insert문과 2번 방법인 SelectKey 방법을 사용
- 1번 방법은 insert시 PK인 bno가 null 값으로 출력 되지만
- 2번 SelectKey 방법은 insert시 PK인 bno가 정상적으로 출력이 된다.
Read Test
- Select문을 사용하므로 resultType 선언
- bno에 해당하는 내용을 읽을 것이기 때문에 where절에 bno 선언
- VO 객체를 생성하여 bno가 5인 객체를 담고 log로 출력
Delete Test
Update Test
- VO 객체를 생성
- 생성한 객체에 set메소드를 통하여 수정할 변수들을 선언
- 선언한 bno에 대한 객체가 수정
2. MVC CRUD Service Test
Create, Read, Update, Delete를 비즈니스 로직을 위해 각 Service를 Test
- 비즈니스 계층을 위해 패키지를 생성
- BoardServiceImple은 느슨한 결합을 하기 위해 메소드를 구현하는 역할
- service 패키지를 스캔하기 위해 xml에 등록
Create Test
- BoardService 인터페이스를 생성해 메소드 등록
- @AllArgsConstructor 어노테이션은 단일 파라미터일 경우 자동으로 의존성 주입을 하는 어노테이션이다. 때문에 따로 Setter를 선언할 필요가 없다
- DB연동 체크를 위해 BoardMapper 객체를 생성
- Service 인터페이스에 메소드를 등록 했으므로 Override를 통해 구현
- Service를 Test 해야하기 때문에 객체를 생성후 @Autowired를 선언하여 의존성 주입
- VO 객체 생성 후 작성할 내용을 set메소드를 사용해 작성한다.
- service객체에서 생성한 메소드 선언
Read Test
Update Test
- 객체에서 1을 조회한다. 조회하는 이유는 bno가 1인 객체를 수정하기 위함이다.
- 조회한 값이 null 이면 return 하고 값이 있다면 set을 사용해 제목 수정한후 modify 메소드 호출
Delete Test
3. MVC CRUD Controller Test
Create, Read, Update, Delete를 웹으로 구현하기 위해 Controller를 Test
- @Controller 어노테이션을 통해 객체로 등록될 수 있도록 한다.
- RequestMapping으로 상위 경로를 설정
- @AllArgsConstructor로 파라미터 하나인 객체를 의존성 주입
- @WebApplicationConfiguration을 사용해 WebApplicationContext를 이용 할 수 있도록 설정
- @RunWith 는 JUnit을 사용할 수 있게 한다.
- @ContextConfiguration으로 설정 파일을 로드
- MockMvc는 WAS를 구동하지 않고 테스트를 할 수 있게 해준다.
- @Before 는테스트 메소드 실행 전 실행하게 해준다.
Create Test
- @GetMapping은 register.jsp로 이동하기 위함이다.
- 데이터 타입이 void 이면 url자체를 리턴한다.
- @PostMapping은 Post 방식을 처리하기 위함이다.
- command 방식으로 VO 객체를 가져온다.
- Redirect를 위해 RedirectAttributes를 선언
- Service에서 로직 처리한 메소드를 호출
- addFlashAttribute로 bno를 result에 담아 list로 redirect
- mockMvc 객체 내에 내장되어 있는 함수를 사용해 post 방식으로 register 경로로 데이터를 전달
- .param을 사용하여 전달할 파라미터값을 선언
Read Test
- Model 객체를 생성하여 데이터를 가지고 전달
- getList() 메소드를 list에 담는다.
Update Test
- VO 객체를 생성하고 list로 이동하기 위해 redirect 객체 선언
- 만약 수정을 한다면 success를 result에 담아 list로 redirect
- Post방식으로 modify로 이동
- .param으로 수정될 내용을 담는다.
Delete Test
- bno 값을 RequestParam으로 파라미터 값을 넣어준다.
- RequestParam은 HttpServletRequest와 같은 역할을 한다.
- Post 방식으로 14인 bno를 가지고 간다.