스프링 테스트 작성 가이드라인(p424) 항상 단위 테스트를 먼저 고려한다. 하나의 클래스 또는 성격이 같은 긴밀한 클래스 몇 개를 모아서 외부와의 의존관계를 모두 차단, 필요에 따라 목 오브젝트 등을 활용하여 '고립된 테스트'를 만든다. 외부 리소스를 사용해야만 가능한 테스트는 통합 테스트로 만든다. DAO는 DB까지 연동하는 테스트로 만들고 DB에 테스트 데이터를 준비한다. DAO가 충분히 테스트 되었다면 DAO를 이용하는 코드는 DAO의 역할을 스텁이나 목 오브젝트로 대체하여 테스트한다. 단위 테스트를 만들기 너무 복잡하다고 판단되는 코드는 처음부터 통합 테스트를 고려해본다. 스프링 테스트 컨텍스트 프레임워크를 이용해 통합 테스트를 작성할 수 있다. 엔터프라이즈급 스프링 서버 개발을 하다보니 단위 ..
테스트 대역(Test double) 테스트 대상이 되는 오브젝트의 기능에만 충실하게 수행하면서 빠르게, 자주 테스트를 실행할 수 있도록 사용하는 오브젝트 ex) Test DB를 보는 DataSource, DummyMailSender 테스트 스텁(Test stub) 테스트 동안 코드가 정상적으로 수행할 수 있도록 돕는 테스트 대상 오브젝트의 의존객체 목 오브젝트(Mock object) 테스트 오브젝트와 자신 사이에서 일어나는 커뮤니케이션 내용을 저장해뒀다가 테스트 결과를 검증하는 데 활용할 수 있도록 하는 오브젝트
PlatformTransactionManager 스프링이 제공하는 트랜잭션 추상화 방법 PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition()); ... try { transactionManager.commit(status); } catch (...) { transactionManager.rollback(status); }
- Total
- Today
- Yesterday