백엔드

Junit을 통한 단위 테스트 정리

coyojo 2023. 4. 20. 12:09

💡  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이 발생해야 테스트가 성공, 그렇지 않으면 실패이다.