Junit을 통한 단위 테스트 정리
💡 JUnit이란?
자바용 단위테스트(Unit Test) 도구 입니다.
💡 단위테스트란?
- 소스코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차이다.
- 모든 함수와 메소드에 대한 테스트 케이스(Test case)를 작성하는 절차를 말한다.
💡jUnit 특징
- @Test 메서드가 호출할 때 마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어지게 한다.
- 단정(assert) 메서드로 테스트 케이스의 수행 결과를 판별할 수 있다.
- jUnit4부터는 어노테이션으로 간결하게 테스트를 지원한다.(@Test @Before @After)
- 결과는 성공(녹색), 실패(붉은색) 중 하나로 표시된다.
- 테스트 결과를 확인하는 것 이외 최적화된 코드를 유추해내는 기능도 제공한다.
💡assert메소드 정리
assertArrayEquals(a, b) : 배열 A와 B가 일치함을 확인한다.
assertEquals(a, b) : 객체 A와 B가 같은 값을 가지는지 확인한다.
assertEquals(a, b, c) : 객체 A와 B가 값이 일치함을 확인한다.( a: 예상값, b:결과값, c: 오차범위)
assertSame(a, b) : 객체 A와 B가 같은 객체임을 확인한다.
assertTrue(a): 조건 A가 참인지 확인한다.
assertNotNull(a) : 객채 A가 null이 아님을 확인한다.
@Test
void getAlbum() {
Album album = new Album();
album.setAlbumName("테스트");
Album savedAlbum = albumRepository.save(album);
AlbumDto resAlbum = albumService.getAlbum(savedAlbum.getAlbumId());
assertEquals("테스트", resAlbum.getAlbumName());
}
테스트에 사용되는 어노테이션 정리
(1) 테스트 메소드 지정하기
@Test가 메소드 위에 선언되면 이 메소드는 테스트 대상 메소드임을 의미한다.
(2) 테스트 메소드 수행시간 제한하기
@Test(timeout=5000)를 메소드 위에 선언합니다. 시간단위는 밀리 초이고
이 테스트 메소드가 결과를 반환하는데 5,000밀리 초를 넘긴다면 이 테스트는 실패이다.
(3) 테스트 메소드 Exception 지정하기
@Test(expected=RuntimeException.class)가 메소드 위에 선언되면
이 테스트 메소드는 RuntimeException이 발생해야 테스트가 성공, 그렇지 않으면 실패이다.