junit test

remind :

test 이름 정하기 : test하기 원하는 메소드 + test(명명규칙)

1) dao test

1.전체 사용자 조회 테스트

추가 : 수업시간에 table 값이 5개에서 → 16개로 증가하였다. 데이터 베이스의 값이 변동하면, assertEquals 값에 넣을 userList.size() 가 변경 되기 때문에 16을 넣어줘야 한다.

→ 알수 있는 것 :

** 데이터베이스의 값처럼 외부에 의존하고 있는 데이터를 가지고 있는 것들을 Test 하기 힘들다. 값이 동적으로 계속 변경되고 그값으로 test를 하는것이 어려울 수 있다.

2.사용자 아이디를 받아서 특정 사용자 정보 조회

3.사용자 페이징 조회 테스트

첫번째로 숙지할 점 : SQL 쿼리문 구조 뜯어보기

SELECT * FROM (SELECT ROWNUM rn, a.* FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize ) where rn between (:page-1)* :pasesize + 1 AND :page * :pasesize

SELECT * FROM users

ORDER BY userid

검색하려는 테이블의 값은 ORDER BY 가 없으면 항상 값의 순서를 보장할 수 없다. 값이 매번 달라진다. ROWNUM 을 사용해서 늘 동일한 값을 가져오기 위해 ORDER BY USERID 로 정렬을 해준다.


SELECT * FROM (SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize* ) where rn between (:page-1)* :pasesize + 1 AND :page * :pasesize

SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize*

SELECT * FROM (SELECT ROWNUM rn, a. FROM (SELECT * FROM users order by userid ) a WHERE ROWNUM <= :page * :pasesize ) where rn between (:page-1) :pasesize + 1 AND :page * :pasesize**

현재 구하고자 하는 값 : 내가 조회하고 싶은 페이지에 들어있는 모든 회원들

where rn between (:page-1) :pasesize + 1 AND :page * :pasesize 해설*

→ 내가 구하려고 하는 페이지의 바로 직전 페이지에 있는 마지막 회원의 rownum + 1 은 내가 구하려고 하는 페이지의 첫번째 회원의 rownum 값이 된다. + 내가 구하려고 하는 페이지 * pagesize 는 내가 구하려고 하는 페이지의 회원중에 가장 마지막에 있는 회원의 rownum 의 값

rn 이 위에 where 절의 범위에 있는 회원의 값은 : 내가 구하고자하는 조회를 원하는 페이지에 들어있는 모든 회원의 리스트


위에서 구한 sql문을 mybatis 용으로 변환해보자

user.xml

입력하는 :page, :pagesize 인 바인드변수를 mybatis 에서는 #{page} , #{pasesize} 로 변경한다.

아래는 vo객체를 typeAliase 로 지정해준 것이다. mybatis-config.xml 에 alias 경로를 지정해 놓는다.

mybatis-config.xml

다시 jtest로 돌아가자

위 테스트 사진 설명 :

2) service test

게시판 만들기 실습 ( 수업시간에 한 내용)

1) mybatis-config

논리적으로 : 데이터 베이스에 연결이 필요하다.

-여기서 driver, url , username, password등을 통해 데이터 베이스와 연결하는 환경설정을 한다.

-또한 여기서 sql 문들이 <select, insert, update> 태그로 연결되어 있는 xml (우리는 여기서 user.xml ) 로 설정

현재 세부분으로 설정이 되어 있다.

2) user.xml