2025/05/08 3

[Spring Boot 테스트] Gradle에서 필터 중복 + Mockito 설정 충돌로 인한 테스트 실패 해결기

📝 서론Spring Security + JWT 기반 인증 구조를 가진 프로젝트에서 MockMvc를 활용한 단위 테스트를 작성하던 중두 가지 독립적인 테스트가 서로 간섭하면서 테스트가 실패하는 현상을 겪었다.Gradle CLI 환경에서만 발생하며, IDE에서는 정상 작동하는 케이스였다. @Nested @DisplayName("회원 탈퇴 테스트") class DeleteUserTest { @Test @DisplayName("회원 탈퇴 성공 (JWT 인증)") void deleteUserSuccess() throws Exception { // given Long userId = 1L; String email = "user@example.com"; String toke..

카테고리 없음 2025.05.08

[Spring Boot] MockMvc 테스트 중 401 오류? 알고 보니 JwtAuthenticationFilter가 작동하지 않았다

📝 서론JWT 기반 인증을 적용한 Spring Boot 프로젝트에서, 사용자 인증 관련 단위 테스트를 작성하던 중 예상치 못한 오류를 만났다.java.lang.AssertionError: Status expected: but was:정상 로그인 후 사용자 정보를 조회하는 API에서 200 OK를 기대했지만, 실제로는 401 Unauthorized가 반환되었다.MockMvc를 통한 요청이 분명 Authorization 헤더에 JWT를 포함하고 있었음에도, 필터를 거치지 않아 인증에 실패한 것이었다.🧩 문제 상황 요약// 테스트 코드 일부 mockMvc.perform(get("/api/users/me") .header("Authorization", "Bearer " + token) .with(csrf()..

카테고리 없음 2025.05.08

[Spring Boot] DTO 역직렬화 오류와 해결법 – @JsonCreator vs @NoArgsConstructor

서론: 단위 테스트 중 발생한 500 에러의 정체백엔드 프로젝트의 단위 테스트를 작성하던 중, 예상치 못한 500 Internal Server Error가 발생했다. 컨트롤러에서 204 No Content 응답을 기대했지만, 실제 테스트 결과는 아래와 같았다.java.lang.AssertionError: Status expected: but was: 콘솔 로그를 확인해보니, 문제는 DTO 역직렬화에서 발생하고 있었다.Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `ProductStatusUpdateRequestDto` (no Creators, like default c..

카테고리 없음 2025.05.08