토비의 스프링3

Download Report

Transcript 토비의 스프링3

토비의 스프링3

(2장 테스트 요약정리) 작성자: 이동찬

2.1 UserDaoTest 다시보기

1. 테스트의 유용성 ㅇ 의도대로 코드가 정확히 동작하는지 확인하여 코드를 신뢰하도록 해주는 작업 ㅇ 테스트 결과를 토대로 결함을 제거 2. UserDaoTest의 특징 ㅇ 웹을 통한 DAO 테스트 방법의 문제점 - DAO 뿐만 아니라 서비스클래스, 컨트롤러, JSP 뷰 등 모든 레이어의 기능을 구현해야 비로소 테스트 가능 - 다양한 SW 및 코드가 연결되어 디버깅이 난해 ㅇ 작은 단위의 테스트(관심의 분리, DB를 특정 상태로 설정) ㅇ 자동수행 테스트 코드(main 메소드를 이용한 테스트의 한계) ㅇ 지속적인 개선과 점진적인 개발을 위한 테스트 3. UserDaoTest의 문제점 ㅇ 수동확인 작업의 번거로움 ㅇ 실행 작업의 번거로움

2.2 UserDaoTest 개선

1. 테스트 검증의 자동화 ㅇ 육안으로 확인하지 않고도 테스트 결과 확인(성공 or 실패) 2. 테스트의 효율적인 수행과 결과관리 ㅇ JUnit 테스트로 전환 - main 메서드 제거 ㅇ 테스트메소드 전환 - @Test ㅇ 검증코드 전환 - if/else -> assertThat(value, matcher)

2.3 개발자를 위한 테스팅 프레임워크

1. JUnit + Eclipse IDE 2. 테스트결과의 일관성(매 테스트케이스마다 DB의 내용을 초기화) ㅇ deleteAll(), getCount() 3. 포괄적인 테스트 ㅇ 단순기능도 지나치지 말고 예외상황을 발생시켜 테스트 프로그램 작성 ㅇ 만들어진 코드의 기능을 모두 점검할 수 있는 테스트 코드작성 4. 테스트가 이끄는 개발 ㅇ 향후, 기능통합 및 시스템 운용 시 발생되는 버그 최소화 ㅇ 테스트 클래스를 작성 후 코드 작성을 권장 ㅇ 머리속의 설계 사상이 구체적으로 정리 5. 테스트 코드 개선 ㅇ 반복되는 코드는 Refactoring 하여 setUp, @Before, @After 로 분리 예) ApplicationContext 선언부분 ㅇ JUnit 의 테스트 수행순서 ㅇ 테스트를 수행하는데 필요한 정보는 픽스처(fixture) 적용

2.4 스프링 테스트 적용

1. 테스트를 위한 어플리케이션 컨텍스트 관리 ㅇ 스프링테스트 컨텍스트 프레임워크 적용 - @Autowired, @RunWith, @ContextConfiguration 2. DI와 테스트 ㅇ 테스트코드에 의한 DI (수동방식) - @DirtiesContext ㅇ 테스트를 위한 별도의 DI 설정(테스트용 설정파일을 별도로 정의) ㅇ 스프링 컨테이너 없는 DI 테스트 * DI를 이용한 테스트 방법선택 . 기본적으로는 스프링 컨테이너 없이 테스트 . 여러 오브젝트와 복잡한 의존관계가 있는 오브젝트는 스프링 컨테이너를 이용한 DI

2.5 학습 테스트로 배우는 스프링

1. 학습 테스트의 장점 ㅇ 다양한 조건에 따른 기능을 손쉽게 확인 ㅇ 학습 테스트 코드를 개발 중에 참고 ㅇ 프레임워크나 제품 업그레이드 시 호환성 검증 지원 ㅇ 테스트 작성에 대한 훈련 ㅇ 새로운 기술을 공부하는 과정의 즐거움 증가 2. 학습 테스트 예제 ㅇ JUnit 테스트 오브젝트 테스트 ㅇ 스프링테스트 컨텍스트 테스트 3. 버그 테스트 ㅇ 테스트의 완성도 증가 ㅇ 버그의 내용을 명확하게 분석하도록 지원 ㅇ 기술적인 문제 해결 지원