게시물 목록 조회 테스트 메서드 : A
, 게시물 등록 조회 테스트 메서드 : B
라고 가정했을 때,A
와 B
가 함께 존재하며, A
에는 반환된 게시물의 필드를 검증하는 부분이 있다.B
보다 아래 라인에 있는 A
의 결과가 B
의 영향을 받았다.
- 예시) 목록 조회 검증 코드
Assertions.assertThat(postService.getPosts(pageable).getPostList()).hasSize(3) .extracting("title", "content") .containsExactlyInAnyOrder( tuple("테스트 제목", "테스트 내용"), tuple("테스트 제목", "테스트 내용"), tuple("망원동 맛집", "맛집 소개") );
- 테스트에서 기대하는 게시물 제목 리스트 : "테스트 제목", "테스트 제목", "망원동 맛집" - DB에 저장되어 있는 게시물 제목 리스트 : "테스트 제목", "테스트 제목", "테스트 제목" `(B로 인해 새로 등록된 게시물)`
- 프로파일을 분리하지 않을 시, 위의 예시처럼 테스트 실행 순서에 영향을 받아 테스트의 검증이 일관되지 않거나, 때에 따라 실패하는 문제가 발생했다.
@BeforeEach
를 제거하고, @AfterEach
의 tearDown()
메서드를 추가하여 각 테스트 후 데이터 클렌징 작업을 수행하도록 했다. 이를 통해 개별 테스트 간에 영향을 방지했다.User
와 Post
를 생성하는 빌더 코드가 반복적으로 작성되었다.User
와 Post
를 생성하는 빌더를 별도로 분리하여 코드의 중복을 제거하고 유지보수성을 향상시켰다.- 함께 사용하는 코드를 리팩토링하기 위해 설명하는 과정은 쉽지 않다.
상대가 납득할 수 있도록 근거를 들어 글로 잘 정리해보자.