@DataJpaTest vs @SpringBootTest

Dal col·2025년 3월 26일

테스트코드

목록 보기
2/4

@SpringBootTest와 @DataJpaTest 둘의 차이점은 무엇일까?

@DataJpaTest

@DataJpaTest는 JPA 관련 컴포넌트만 테스트하기 위한 슬라이스 테스트 어노테이션입니다.

특징

@Entity나 @Repository 관련 빈만 등록을 합니다. 그래서 @Controller, @Service같은 빈은 등록을 못합니다.

@Autowird 같은 경우도 Repository는 사용 가능하지만 @Service, @Controller는 불가합니다.

@DataJpaTest를 들어가보면 @Transactional이 있어 테스트 후 자동 롤백으로 초기화가 됩니다.

이러한 특징으로 @DataJpaTest는 JPA Repository를 테스트할 때 유용합니다. 또한 테스트 속도도 빨라 JPA Repository관련해서는 사용해도 나쁘지않다고 생각합니다.

@SpringBootTest

@SpringBootTest는 @DataJpaTest와 달리 Controller, Service, Repository 구분하지 않고 스프링의 모든 빈을 테스트할 수 있는 어노테이션입니다.

특징

@DataJpaTest와 달리 스프링의 모든 빈을 테스트 할 수가 있습니다.

하지만 @SpringBootTest는 @DataJpaTest와 달리 @Transactional이 없어 자동롤백이 되지 않아 @AferEach나 @BeforeEach를 사용해야합니다.

그래서 TestCode를 여러개를 실행할 때 저런 초기화 어노테이션을 사용하지않으면 데이터가 남아있어 테스트가 실패하는 경우가 발생합니다.

@AfterEach

@AfterEach는 실행 후 데이터를 초기화 해줍니다.

@BeforeEach

@BeforeEach는 실행 전 데이터를 초기화 해줍니다.

profile
백엔드 개발자가 되기까지의 과정

0개의 댓글