@SpringBootTest 사용하면 실제로 애플리케이션 컨텍스트를 로드하여 테스트를 실행해야 함.
즉 애플리케이션의 모든 구성 요소를 초기화하고 시작해야 한다는 의미이다. 따라서, 애플리케이션 컨텍스트를 로드하는 작업은 상당한 시간이 소요될 수 있으며, 테스트의 실행 속도를 느리게 할 수 있다.
@SpringBootTest는 모든 스프링 빈과 구성 요소를 로드하기 때문에, 테스트 환경에서 필요하지 않은 빈들까지 모두 로드됨.
이는 테스트의 복잡성을 증가시키고, 의존성 관리를 어렵게 만들 수 있다.
특히, 외부 서비스와의 연결이 필요한 경우에는 실제 환경에서의 연결이 필요하지 않는 경우에도 @SpringBootTest를 사용하면 의존성을 관리하기 어려울 수 있음.
@SpringBootTest를 사용하면 테스트 간의 격리성이 감소할 수 있다.
모든 빈과 구성 요소가 로드되기 때문에, 다른 테스트에 의해 영향을 받을 수 있고, 외부 서비스와의 연결 등의 의존성을 가진 경우 테스트 실행에 어려움을 겪을 수 있음.
따라서, 스프링 단위 테스트에서는 @SpringBootTest보다는 더 경량화된 방식을 사용하는 것이 좋다.
대부분의 단위 테스트는 모의 객체(Mockito 등)를 사용하여 의존성을 가진 객체를 대체하고, 필요한 빈들만 로드하여 실행하는 것이 효율적이다.
이를 통해 테스트의 실행 속도를 높이고, 의존성을 관리하기 쉽게 만들 수 있다.