수동 DI를 이용하는 테스트
테스트용 협력자(Collaborator)/의존 오브젝트를 테스트 대상에 직접 주입하고 테스트
테스트용으로 테스트 대역들을 세팅해 주는 것 외에 나머지 기능들은 테스트 대상이 이미 개발된 코드 중에서 다른 오브젝트들과 많이 협력해서 일을 해야되는 경우 스프링 컨테이너를 함께 사용하는 방법으로 테스트를 만듦
스프링 DI를 이용하는 테스트
테스트용 협력자(Collaborator)/의존 오브젝트를 스프링의 구성 정보를 이용해서 지정하고 컨테이너로부터 테스트 대상을 가져와서 테스트
- @ExtendWith + @ContextConfiguration
- @Autowired
@ContextConfiguration, @Autowired 적용
- @ExtendWith : JUnit이 @ContextConfiguration를 이용하려면 스프링의 기능을 이용하여 확장해달라고 애너테이션을 붙여줘야 됨
- @ContextConfiguration : 구성정보 클래스를 저장가능
- 테스트를 실행할 때 스프링의 구성정보를 읽어서 스프링 컨테이너 생성
- @Autowired : 의존 관계를 주입
- 같은 타입의 컨테이너 안에 오브젝트가 있으면 돌려줌
일반적으로는 BeanFactory를 가지고 오는 것보다 내부에서 만들어진 오브젝트를 바로 가져오게 작성
참고
스프링 DI를 이용하는 테스트보다 수동 DI를 이용하는 테스트가 속도가 조금 더 빠를 수 있음
테스트 코드 내에서 Stub을 제어할 수도 있음