[Java] 테스트 코드 작성 요령

이상현·2024년 10월 6일
0

Java

목록 보기
21/21
post-thumbnail

개인 메모용 게시글 입니다

  1. 테스트용 임시 데이터에 들어가는 문자열은 모두 찾아보기 쉽도록 상수로 선언하기
public static final String PLAYLIST_0_TITLE = "플레이리스트 제목0";
public static final String PLAYLIST_0_IMAGE_URL = "https://test0.com";
// ..
PlaylistUpload playlistUpload0 = PlaylistUpload.builder()
            .title(PLAYLIST_0_TITLE)
            .playlistImageUrl(PLAYLIST_0_IMAGE_URL)
            .build();
  1. 테스트 하는 메소드의 대한 테스트를 모아놓은 @Nested 클래스 만들고 그 클래스 안에 여러가지의 테스트 메소드 작성

    ex) getPlaylists() 메소드에 대한 테스트

@Nested
class GetPlaylistsTests {
    @Test
    void 플레이리스트_목록_가져오기_성공() {
        // given
        // when
        // then
    }
 
 	@Test
	void 플레이리스트_목록_가져오기_페이지네이션() {
		// given
		// when
		// then
	}
        
    @Test
	void 탈퇴한_멤버의_트랙이_포함된_플레이리스트_조회() {
        // given
        // when
        // then
	}
}
  1. 어떤 상황에서도 통과하도록 테스트 작성
    ex) 통합 테스트시 DB에 데이터가 이미 있든 없든 통과하도록

  2. 사용되는 범위에만 변수 선언

  3. 한 테스트 메소드에서는 한가지 개념만 테스트
    ex)
    1. 플레이리스트_목록_가져오기_성공
    2. 플레이리스트_목록_가져오기_없음
    3. 플레이리스트_목록_가져오기_페이지네이션
    4. 탈퇴한_멤버의_트랙이_포함된_플레이리스트_조회
    5. 삭제한_트랙이_포함된_플레이리스트_조회

  4. 테스트용 임시 데이터 @BeforeEach로 만들때, 테스트가 작성되어있는 다른 서비스 메소드에 어느정도 의존해도 괜찮다.
    ex) 생성하는 서비스 메소드 호출

  5. DB 연동된 통합 테스트 시, 영속성 컨텍스트에 관해 잘 생각해야 한다.

결국 핵심은 나중에 보고 수정하거나 뭘 추가하기 쉽게 하기 위함이다.

0개의 댓글