미니홈피 프로젝트의 게시판 신뢰성 확보하기: JUnit5 테스트 코드 구현기

momomoki·2025년 1월 8일
0

개요

테스트 코드의 필요성에 대해 궁금하다. 미니홈페이지 프로젝트에 게시판 api에 테스트 코드를 적용해보며 그 가치를 직접 확인해보고자 합니다.

Repository 계층의 CRUD 테스트 코드 살펴보기

저는 Controller와 Service 계층에서 입력값 검증이 완료되었다고 가정하고, Repository 계층의 핵심 기능인 CRUD 동작을 검증하는데 집중했습니다. 아래는 제가 작성한 테스트 코드입니다.

@Test
@Transactional  // 테스트 후 데이터 롤백
void 게시글을_등록_합니다(){
    Post post = Post.builder()
        .title("테스트용제목")
        .content("테스트용내용")
        .createdAt(LocalDateTime.now())
        .userId(1L)
        .build();
    int result = postRepository.insert(post);
    Assertions.assertThat(result).isEqualTo(1);
}

@Test
void 게시글_등록_시_null_값이_들어온다면(){
    Post post = Post.builder()
        .content("테스트용내용")  // title 필드 누락
        .createdAt(LocalDateTime.now())
        .userId(1L)
        .build();

    assertThatThrownBy(() ->{
       postRepository.insert(post);
    }).isInstanceOf(DataAccessException.class);
}

위 코드는 게시글 등록에 대한 테스트 케이스입니다. 정상적인 게시글 등록과 필수 필드(title)가 누락된 경우를 테스트합니다. @Transactional 어노테이션을 사용하여 테스트 후 데이터가 롤백되도록 했습니다.


이외에도 게시글 조회, 수정, 삭제에 대해 다음과 같은 테스트를 구현했습니다.

각 테스트는 정상 케이스와 예외 케이스를 모두 고려하여 작성했으며, @Transactional을 통해 테스트 데이터를 관리했습니다.

결론

테스트 코드는 개발 과정에서 발생할 수 있는 다양한 오류 상황을 사전에 발견하고 대응할 수 있게 해주는 강력한 도구입니다. 제가 이번 프로젝트에서 경험한 것처럼, 테스트 코드를 작성하면서 예상치 못한 에러 케이스들을 발견하고 처리할 수 있었습니다.
하지만 현실적인 고민도 있습니다. 테스트 범위를 설정하고, 테스트 케이스를 구현하고, 테스트 환경을 구축하는 과정에서 상당한 시간이 소요됩니다. 때로는 실제 기능 구현보다 테스트 코드 작성에 더 많은 시간을 투자해야 할 수도 있습니다.
테스트 코드의 가치와 필요성에는 공감하지만, 촉박한 일정의 프로젝트에서는 테스트 코드 작성이 현실적으로 어려울 수 있습니다. 저 역시 시간이 부족했던 프로젝트에서 테스트 코드를 포기해야 했던 경험이 있습니다.
결국 테스트 코드는 프로젝트의 품질을 높이는 중요한 요소이지만, 현실적인 제약 속에서 어떻게 균형을 맞출 것인가는 여전히 고민이 필요한 부분인 것 같습니다.

profile
얍얍엽엽욥욥

0개의 댓글

관련 채용 정보