인프런 커뮤니티 질문&답변

단무지님의 프로필 이미지
단무지

작성한 질문수

실전! Querydsl

테스트 관련 질문이 있습니다!

해결된 질문

작성

·

134

0

안녕하세요 강사님.

QA관련 글들을 보다가 이 글을 보았는데요.

https://www.inflearn.com/questions/42585.
여기 글에 강사님이 남긴 답변중에

"@DataJpaTest는 기본적으로 JPA 테스트를 위한 최소한의 스프링 빈만 컨테이너에 로딩합니다. 제가 사용하는 빈들을 기본 설정으로 로딩하지 않습니다.

그래서 저는 실무에서 테스트를 작성할 때 @DataJpaTest를 잘 사용하지 않습니다. 실무에서는 이미 @SpringBootTest를 사용하고 있는데, 이렇게 추가 테스트가 들어가면 스프링 컨테이너가 추가로 한번 더 실행되어야 합니다."

라고 하셔서 질문이 있습니다!!

만약 100개의 테스크 클래스가 있다고 가정하면, 

50개의 클래스에서는 @SpringBootTest를 사용하고,
20개는 @DataJpaTes,
나머지 30개는 순수 자바 or 목을 사용한다고 하면

테스트케이스를 전체 실행할때, 50개의 클래스마다 스프링 컨텍스트가 뜨고, 내리고 그리고 나머지 30개는 @DataJpaTest에 필요한 의존성만 받고, 내리고를 반복 하잖아요~~

근데 강사님께서는 "한번 더 실행되어야 합니다." 라고 말씀을 해주셨는데 @DataJPaTest가 아닌 @SpringBootTest를 이용해도 스프링 컨텍스트가 한 번더 실행되고 내려가고를 반복해야하는 거 아닌가요??!!

제가 잘못알고있었던건지 혼란이 오네요! ㅠㅠ

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 참치캔님

스프링 컨테이너를 띄워서 테스트 할 때, 같은 설정 조건이면 기존 스프링 컨테이너를 재사용합니다.

따라서 다음 테스트에서(조건이 같다면) 추가적으로 스프링 컨테이너를 띄우는 시간이 발생하지 않습니다.

그런데 @DataJpaTest를 사용하면, @DataJpaTest를 위한 새로운 조건이 되어야 하기 때문에 스프링 컨테이너가 다시 띄워집니다.

감사합니다.

단무지님의 프로필 이미지
단무지

작성한 질문수

질문하기