Error Log

[Test Code] 단일 메서드 실행은 성공 이지만 Test Class로 전체 메서드 실행 시 실패하는 에러

Subi 2023. 2. 2. 11:28
  • Repository Test를 진행하던 중 발생
  • 단일 Test Method 를 실행했을 때는 문제가 없지만 Test Class로 전체 Method를 실행했을 때 검증 단계에서 실패하는 에러
  • 단일 Test Method 실행

  • Test Class 로 전체 Method 실행

  • 실패 에러 → 설정한 결과 값은 2 이지만 실제 결과는 0 이 나왔다.

  • detailTest()
 @Test
    void detailTest() throws Exception {
        //when
        List<AuthGroupMenuResponse> authGroupMenuResponses = 
									authGroupRepository.selectAuthGroupMenuResponseList(1L);
        //then
		assertThat(authGroupMenuResponses.size()).isEqualTo(2);
    }

원인

  • @BeforeEach 로 데이터를 save 해주고 메서드를 실행 시킨 후 @AfterEach로 데이터를 지워주는 로직에서 auth_group table 에 있는 id 가 1 인 데이터를 찾는 쿼리문이였다. 하지만 다른 메서드가 실행 되면서 auto increment 로 저장되는 id 값이 실행 될때 마다 1씩 증가하여 1 라는 데이터는 이미 생성 후 지웠진 데이터라 찾지 못하여 에러가 발생 되었다.

해결방법

  • detailTest() 메서드를 수정하였다.
  • 기존 id = 1L 의 값을 찾는 로직에서 authGroup의 값을 가져와 데이터의 id 값을 변수로 받아 로직을 실행 하도록 수정하였다.
@Test
void detailTest() throws Exception {
    //given
    List<AuthGroup> all = authGroupRepository.findAll();
    Long id = all.get(0).getId();

    //when
    List<AuthGroupMenuResponse> authGroupMenuResponses = 
												authGroupRepository.selectAuthGroupMenuResponseList(id);

    //then
	assertThat(authGroupMenuResponses.size()).isEqualTo(2);
}
  • 수정 후

깔끔히 성공하였다!