[ JSP ] JUnit 단위테스트 수행하기

duck-ach·2022년 10월 25일
1

JSP

목록 보기
12/14

JUnit 이란?

Java에서 독립된 단위테스트(Unit Test)를 지원해주는 프레임워크이다.

JUnit 단위 테스트

  • 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이 아님을 확인한다.

공식문서

junit.org

javadoc을 읽으면 되고, JUnit4도 오른쪽 상단을 클릭하면 읽을 수 있으니 들어가서 읽으며 필요한 내용을 찾으면 된다.


JUnit 라이브러리 설정하기

따로 설치할 건 없고, 이클립스에서 추가 해주면 된다.


프로젝트에서 오른쪽 마우스 클릭 후 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);
}
profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글