Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다.
- DAO의 메소드 단위로 단위 테스트를 수행한다.
- Service 실행 결과가 "특정 값" 인 경우 Service를 대상으로 단위 테스트를 수행할 수 있다.
- 프로젝트의 Build Path에서 JUnit 라이브러리를 추가하고 사용한다.
- 테스트 수행
프로젝트 실행 :Run
-JUnit
(서버로 하는게 아니다.)
주요 애너테이션(Annotation) :
- 1)
@Test
: 단위 테스트를 수행하는 메소드- 2)
@Before
: 단위 테스트 수행(@Test) 이전에 실행하는 메소드- 3)
@After
: 단위 테스트 수행(@Test) 이후에 실행하는 메소드- 4)
@ignore
: @ignore을 선언하여 테스트를 수행하지 않게 하기위한 메소드
- 주요 메소드(Method)
assertEquals(a,b)
: 객체 a, b의 값이 일치함을 확인한다.assertArrayEquals(a,b)
: 배열 a, b의 값이 일치함을 확인한다.assertSame(a,b)
: 객체 a,b가 같은 객체임을 확인한다. (두 객체의 레퍼런스가 동일한가를 확인한다.)assertTrue(a)
: 조건 a가 참인가 확인한다.assertNotNull(a)
: 객체 a가 null이 아님을 확인한다.
javadoc을 읽으면 되고, JUnit4도 오른쪽 상단을 클릭하면 읽을 수 있으니 들어가서 읽으며 필요한 내용을 찾으면 된다.
따로 설치할 건 없고, 이클립스에서 추가 해주면 된다.
프로젝트에서 오른쪽 마우스 클릭 후 Build Path
를 선택해 준후, Confiqure Build Path...
를 눌러준다.
Classpath
를 선택해 준 후, AddLibrary
를 선택해준다.
JUnit
을 선택해준 후, Next>
버튼을 눌러준다.
JUnit의 버전을 선택할 수 있는데, 4와 5는 메소드가 좀 차이가 날 뿐 큰 차이는 없다고 한다. 나는 JUnit4를 선택해줬다.
이제 라이브러리는 등록 했고, JUnit을 생성해 줄 차례이다.
생성 해줄 패키지를 정하고, 패키지에 마우스 오른쪽 클릭, New
- Other
에 들어가서 junit
을 검색해준다. 그러면 JUnit Test Case라는 문서가 나오는데 여기서 Next>
를 눌러준다.
노랑 - JUnit 버전 (3, 4, Jupiter(5))
파랑 - 이름설정
초록 - 테스트 전에 수행할 것
빨강 - 테스트 후에 수행할 것
후에 Finish를 눌러주면 끝난다.
행의 개수를 세어 예상한 개수가 맞는지 확인하는 테스트이다.
public class BoardTest {
@Test
public void 목록테스트() { // 메소드명으로 한글을 많이 사용한다.
// 목록의 개수가 5개이면 테스트 성공, 아니면 실패
List<Board> boards = BoardDao.getInstance().selectAllBoards();
assertEquals(5, boards.size()); // 몇개를 기대했는데 실제론 몇개다.
}
}
나는 테이블에 5개의 행을 넣어두었기 때문에 성공이 떴다.
성공 시
실패 시
2
번 게시글의 제목이 '긴급공지'이면 테스트 성공, 아니면 실패
@Test![](https://velog.velcdn.com/images/duck-ach/post/d4d4dcdc-2c5e-484c-9120-278cf3e8cbf5/image.png)
Board board = BoardDao.getInstance().selectBoardByNo(2);
assertEquals("긴급공지", board.getTitle());
2
번 게시글을 가진 게시글이 있으면 테스트 성공, 아니면 실패
@Test
Board board = BoardDao.getInstance().selectBoardByNo(2);
assertNotNull(board);
작성한 코드가 삽입이 잘 이루어지는지 테스트 해보는 것이다.
@Test
Board board = new Board();
board.setTitle("Test");
board.setContent("테스트입니다.");
int result = BoardDao.getInstance().insertBoard(board);
assertEquals(9, result);
작성한 코드가 수정이 잘 이루어지는지 테스트 해보는 것이다.
@Test
Board board = new Board();
board.setTitle("Test");
board.setContent("테스트입니다.");
board.setBoardNo(11);
int result = BoardDao.getInstance().updateBoard(board);
assertEquals(1, result);
작성한 코드가 삭제가 잘 이루어지는지 테스트 해보는 것이다.
@Test
public void 게시글삭제테스트() {
// 게시글삽입테스트로 삽입한 게시글 삭제
int result = BoardDao.getInstance().deleteBoard(7);
assertEquals(11, result);
}