본문으로 바로가기

jpa metamodel must not be empty! 테스트 에러

category SPRING/JPA 2022. 3. 24. 15:03
728x90
반응형
SMALL

문제

Controller 테스트중 해당 메시지가 뜨면서 테스트가 실패한다.

@ExtendWith(MockitoExtension.class)
@WebMvcTest(controllers = {TaskController.class})
public class TaskControllerTest {
	@Autowired
	private MockMvc mvc;
	
	@MockBean
	private TaskServiceImpl taskService;
	
	@MockBean
	private TaskRepository taskRepository;
	//...
}

 

원인

@EnableJpaAuditing
@SpringBootApplication(exclude={SecurityAutoConfiguration.class})
public class PmsRenewalApplication {

	public static void main(String[] args) {
		SpringApplication.run(PmsRenewalApplication.class, args);
	}

}

어플리케이션 시작시에 @EnableJpaAuditing이 항상 같이 로드되는데 

대부분의 테스트를 필요로 하는 기능들이 @EnableJpaAuditing을 Bean으로 사용하고 있는 상태이다.

 

@WebMvcTest 은 JPA 관련 Bean을 로드하지 않기 때문에 발생하는 문제라고 한다.

 

해결

@MockBean(JpaMetamodelMappingContext.class)

를 추가하자

@ExtendWith(MockitoExtension.class)
@WebMvcTest(controllers = {TaskController.class})
@MockBean(JpaMetamodelMappingContext.class)
public class TaskControllerTest {
728x90
반응형
LIST