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);
}
- 수정 후
깔끔히 성공하였다!