KOSTA DAY59
Springframework
Mapper Test
CRUD를 위한 Mapping이 잘되었는지 확인하기위한 Test방법에 대해 알아보자.
- 테스트를 위한 DB의 테이블과 data를 생성한다.
(table명 = tbl_board, seq_board)
- BoardVO클래스 생성
- BoardMapper 인터페이스 생성 및 메소드 생성
- BoardMapper.xml 생성 및 select 쿼리문 작성
- BoardMapperTests 테스트 클래스 생성 후 Junit Test처리
전체 data 로그로 출력
Create Test
- 인서트문의 경우 두가지 처리방법이 있다.
- 인서트 후에, pk정보가 필요없는 경우
- 처리방법/pk정보가 필요한 경우
먼저 pk정보가 필요없는 insert
- Query문 작성
- Test 실행
- bno값이 null로 결과가 나온다.
pk정보가 필요한 경우 insert
- insert문 안 selectKey태그를 작성하여, pk값을 구한다.(bno)
- 위와 같은 방식으로 test를 실행했을때, 결과값에 bno값이 출력된다.
Read Test
pk정보를 이용하여 테이터 출력을 해보자.
- Long값을 파라미터값으로 쓸 경우, L을 뒤에 붙여준다.
Service Test
service 객체를 만들어서 Test를 실행해보자.
- service 패키지를 생성
root-context.xml에 service 패키지를 scan할 수 있도록 설정한다. - service 인터페이스 생성
- servie 인터페이스를 implements 하는 InsertBoardService 생성
- InsertBoardService에 오버라이딩 메소드를 작성한다.
내용 → Insert(selectKey사용) - 테스트 실행
Controller Test
Controller 객체를 만들어서 Test 해보자.
Controller는 기본적으로 서버로 부터 받는 주소값을 가지고 결과를 요청하는 공간이기 때문에 서버를 실행하지 않고 Test하기 위해서는 Test 클래스 안에서 설정이 필요하다.
- BoardController를 생성한다.
- ControllerTest 생성 및 설정
- WebAppConfiguration을 사용하여 WebAppicationContext를 이용할 수 있도록 한다.
- ContextConfiguration으로 설정 파일을 로드한다.
- WebAppicationContext를 Setter로 DI한다.
- MockMvc를 선언한다. 이유는 WAS 구동을 하지 않고도 테스트를 할 수 있기 때문에
- Before 어노테이션은 테스트 메소드 실행 전 실행하게 해준다.
- 테스트 코드를 상기 예제와같이 작성 후 실행하면 톰캣 서버 실행을 하지 않아도 결과가 log로 출력된다.
- post방식/ 파라미터값이 있는 경우 예제를 작성해보았다.