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

이상현·2024년 10월 6일
0

Java

목록 보기
21/21
post-thumbnail

개인 메모용 게시글 입니다

  1. 테스트 하는 메소드의 대한 테스트를 모아놓은 @Nested 클래스 만들고 그 클래스 안에 여러가지의 테스트 메소드 작성

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

@Nested
class GetPlaylistsTests {
    @Test
    void 플레이리스트_목록_가져오기_성공() {
        // given
        // when
        // then
    }
 
 	@Test
	void 플레이리스트_목록_가져오기_페이지네이션() {
		// given
		// when
		// then
	}
        
    @Test
	void 탈퇴한_멤버의_트랙이_포함된_플레이리스트_조회() {
        // given
        // when
        // then
	}
}
  1. 통합 테스트와 로직 테스트는 분리해야한다. 분리하지 않을 경우 앱이 커지면 테스트코드 유지보수가 불가능해지고 어디서 오류가 발생한지 몰라 테스트 실패가 떠도 수정이 번거로워진다.

  2. 어떤 상황에서도 통과하도록 테스트 작성
    ex) 통합 테스트시 DB에 데이터가 이미 있든 없든 통과하도록

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

  4. 한 테스트 메소드에서는 한가지 개념만 테스트하고, 이름 또는 DisplayName은 명령문으로 정의
    ex)
    1. 플레이리스트_목록을_가져온다
    2. 빈_플레이리스트_목록을_가져온다
    3. 플레이리스트_목록을_가져올때_페이지네이션을_적용한다
    4. 탈퇴한_멤버의_트랙이_포함된_플레이리스트를_조회할_경우_탈퇴한_멤버의_개인정보는_숨겨진다
    5. 삭제한_트랙이_포함된_플레이리스트를_조회할_경우_트랙을_올린 회원의_정보를_볼수없다

  5. @BeforeEach는 가독성에 좋지 않다. 저 아래에 있는 테스트 코드를 이해하기 위해서 맨 위에 있는 @BeforeEach를 찾아서 읽어야한다. 최대한 지양하기.

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

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

0개의 댓글