Projects/[Spring] Coffee Shop Project

[트러블슈팅] @WebMvcTest 환경에서 @EnableJpaAuditing으로 인한 테스트 실패 해결하기

montmer27 2026. 4. 3. 23:01

상황

OrderControllerTest를 작성하고 실행했더니 4개 테스트가 모두 실패했다. 오류 메시지를 분석한 결과 JPA 관련 빈 생성 실패가 원인이었다.

원인 분석

@WebMvcTest는 웹 레이어만 로드하는 슬라이스 테스트다. 그런데 @SpringBootApplication이 붙은 메인 클래스를 @SpringBootConfiguration으로 인식해서, 같은 클래스에 선언된 @EnableJpaAuditing까지 처리하려 한다.

JPA Auditing은 jpaMappingContext 빈이 필요한데, @WebMvcTest는 웹 레이어만 로드하므로 해당 빈이 존재하지 않아 빈 생성에 실패한다.

@EnableJpaAuditing    ← JPA 컨텍스트 필요
@SpringBootApplication
public class GigaCoffeeApplication { ... }

@WebMvcTest 입장에서는 메인 클래스를 스캔할 때 @EnableJpaAuditing을 만나지만 JPA 컨텍스트가 없어 처리할 수 없는 상황이 된다.

해결 방법

@EnableJpaAuditing을 별도 @Configuration 클래스로 분리한다. @WebMvcTest는 분리된 @Configuration 클래스를 자동으로 포함하지 않아 충돌이 사라진다.

@Configuration
@EnableJpaAuditing
public class JpaAuditingConfig {
}
@SpringBootApplication
public class GigaCoffeeApplication {
    public static void main(String[] args) {
        SpringApplication.run(GigaCoffeeApplication.class, args);
    }
}

결과

4개 테스트가 모두 통과했다.

인사이트

@EnableJpaAuditing은 처음부터 별도 @Configuration으로 분리해두는 것이 좋다. @WebMvcTest뿐 아니라 JPA 컨텍스트 없이 동작하는 다른 슬라이스 테스트에서도 동일한 문제가 발생할 수 있기 때문이다. 슬라이스 테스트를 사용하는 프로젝트라면 메인 클래스에 불필요한 설정을 두지 않는 것이 원칙이다.