@SpringBootTest와 @DataJpaTest 둘의 차이점은 무엇일까?
@DataJpaTest는 JPA 관련 컴포넌트만 테스트하기 위한 슬라이스 테스트 어노테이션입니다.
@Entity나 @Repository 관련 빈만 등록을 합니다. 그래서 @Controller, @Service같은 빈은 등록을 못합니다.
@Autowird 같은 경우도 Repository는 사용 가능하지만 @Service, @Controller는 불가합니다.

@DataJpaTest를 들어가보면 @Transactional이 있어 테스트 후 자동 롤백으로 초기화가 됩니다.
이러한 특징으로 @DataJpaTest는 JPA Repository를 테스트할 때 유용합니다. 또한 테스트 속도도 빨라 JPA Repository관련해서는 사용해도 나쁘지않다고 생각합니다.
@SpringBootTest는 @DataJpaTest와 달리 Controller, Service, Repository 구분하지 않고 스프링의 모든 빈을 테스트할 수 있는 어노테이션입니다.
@DataJpaTest와 달리 스프링의 모든 빈을 테스트 할 수가 있습니다.

하지만 @SpringBootTest는 @DataJpaTest와 달리 @Transactional이 없어 자동롤백이 되지 않아 @AferEach나 @BeforeEach를 사용해야합니다.
그래서 TestCode를 여러개를 실행할 때 저런 초기화 어노테이션을 사용하지않으면 데이터가 남아있어 테스트가 실패하는 경우가 발생합니다.
@AfterEach는 실행 후 데이터를 초기화 해줍니다.
@BeforeEach는 실행 전 데이터를 초기화 해줍니다.