| 레벨 | 개선 항목 | 설명 |
|---|---|---|
| Lv.1 | 불필요한 로직 제거 | - 회원가입 시 중복 인코딩 제거 - 날씨 응답 처리에서 if-else 제거 (early return 패턴 적용) |
| Lv.2 | 성능 개선 | - @EntityGraph로 N+1 문제 해결 - JPQL 제거 |
| Lv.3 | 테스트 코드 보완 | - 테스트 실패 원인 분석 및 예외 메시지 정비 - 테스트 메서드명 컨텍스트 일치화 |
Lv 1 - 불필요한 로직 제거 및 역할 분리PasswordEncoder.encode() 중복 인코딩 제거Lv 2 - 성능 개선@EntityGraph로 해결Lv 3 - 테스트 코드 수정 및 리팩토링CommentServiceTest: ServerException → InvalidRequestException 예외 타입 정정 및 메시지 일치화ManagerServiceTest: 메시지 "Manager not found"로 변경, 메서드명 컨텍스트 반영PasswordEncoderTest: passwordEncoder.matches(raw, encoded) 순서 오류 수정CommentServiceTest@Test
void comment_등록_중_할일을_찾지_못해_에러가_발생한다() {
given(todoRepository.findById(anyLong())).willReturn(Optional.empty());
InvalidRequestException exception = assertThrows(
InvalidRequestException.class,
() -> commentService.saveComment(authUser, 1L, request)
);
assertEquals("Todo not found", exception.getMessage());
}
ManagerServiceTest@Test
void manager_조회_중_할일_없으면_InvalidRequestException_발생() {
given(todoRepository.findById(anyLong())).willReturn(Optional.empty());
InvalidRequestException exception = assertThrows(
InvalidRequestException.class,
() -> managerService.getManagers(1L)
);
assertEquals("Manager not found", exception.getMessage());
}
PasswordEncoderTest@Test
void matches_메서드가_정상적으로_동작한다() {
String rawPassword = "password123";
String encodedPassword = passwordEncoder.encode(rawPassword);
boolean matches = passwordEncoder.matches(rawPassword, encodedPassword);
assertTrue(matches);
}
| 파일 | 설명 |
|---|---|
CommentServiceTest.java | 예외 메시지 및 예외 타입 수정 |
ManagerServiceTest.java | 메시지 및 테스트 메서드명 수정 |
PasswordEncoderTest.java | 테스트 로직 오류 수정 |
UserAdminService.java | 권한 변경 로직 추가 (changeUserRole()) |