테스트를 만들지 않을 거면 스프링을 도대체 뭐하러 쓰는 거죠?
테스트를 작성할때 Service Layer에 대한 테스트를 하고 싶다고 하면
해당 Layer에서 사용하는 외부 시스템을 제어해야 한다.
이러한 역할을 해주는 것이 "Mock", "Stub", "Double".. 등이 있다.
테스트와 DI
- 수동 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 테스트 대상에 직접 주입
- 스프링 DI를 이용한 테스트 : 테스트용 협력자(Collborator)/의존 오브젝트를 스프링의 구성 정보를 이용해서 지정하고 컨테이너로 부터 가져와 테스트
- @ContextConfiguration, @Autowired
도메인 오브젝트 테스트
테스트의 꽃
도메인 모델 아키텍처 패턴 : 도메인 로직, 비즈니스 로직을 어디에 둘 지를 결정하는 패턴
- 트랜잭션 스크립트 - 서비스 메소드
- 도메인 모델 - 도메인 모델 오브젝트
테스트를 열심히 작성하자
도메인 관련 로직은 도메인에 작성하고, 도메인 테스트를 작성하자