분류 전체보기 154

토비의 스프링 - 3.1 다시보는 초난감 DAO // 3.2 변하는 것과 변하지 않는 것

개요 1. 예외처리 기능 적용 2. 변하는 것과 변하지 않는 것 3. 템플릿 메소드 패턴 4. 전략 패턴 본문 들어가기 전에 이전 장인 테스트의 학습 테스트 부분은 배운다기보다는 테스트를 통해서 이루어가야할 개발자의 지침과도 같은 부분이라서 정리하지 않고 곧장 3장을 포스팅하게 되었음을 알린다. 1. 예외처리 기능 적용 기존에 작성하고 있던 초난감 DAO를 보면 예외처리가 없다는 문제점을 발견할 수 있다. JDBC코드를 처리할 때는 예외처리가 기본적으로 요구된다. 시스템에 문제를 일으키지 않기 위해서 특히 데이터베이스의 상태에 문제가 생기지 않게 하기위해서는 말이다. UserDao의 가장 단순한 메소드인 deleteAll()을 통해서 예외처리 기능을 적용시켜보겠다. public void deleteAll..

스프링 2021.05.31

토비의 스프링 - 2.4 스프링 테스트 적용

개요 1. 중복 코드 정리 2. 스프링 테스트 적용 3. DI와 테스트 본문 1. 중복 코드 정리 중복 코드 정리는 사실 이전 페이지에서 다루었어야 했는데 건드리지 않고 넘어갔기에 이번 페이지에서 다루겠다. UserDaoTest의 메소드를 살펴보면 중복되는 코드를 발견할 수 있다. 이를 @Before라는 애너테이션을 통해서 먼저 선언 하고 사용하거나, 오브젝트를 픽스처로 선언함으로써 중복을 제거할 수 있다. 아래의 코드를 살펴보면 바로 이해할 수 있을 것이다. public class UserDaoTest { private UserDao dao;//setup() 메소드에서 만드는 오브젝트를 테스트 메소드에서 사용할 수 있도록 인스턴스 변수로 선언 private User user1; //주로 사용하는 오브젝..

스프링 2021.05.30

토비의 스프링 - 2.3 개발자를 위한 테스팅 프레임워크 JUnit

개요 1. 테스트 결과의 일관성 2. 포괄적인 테스트 3. 테스트 주도 개발 본문 1. 테스트 결과의 일관성 책에서 소개하고 있는 JUnit의 사용법이나 간단한 소개는 생략하도록 하겠다. 현재까지의 코드는 테스트 결과에 일관성을 가지고 있지 못하다. 테이블에 동일한 ID값을 가지고 있으면 그 값 때문에 입력할 수 없다는 결과가 도출 될 것이다. 이러한 테스트는 좋은 테스트라고 할 수가 없다. 여러번 반복하더라도 동일한 결과를 얻을 수 있는 게 좋은 테스트이기 때문이다. 따라서 실행을 마칠 때마다 테이블을 비워서 실행하기 이전 상태로 돌리는 것이다. 이러한 기능을 실현하기 위해서 UserDao에 테이블을 모두 비우는 deleteAll()메소드와 getCount()메소드를 추가한다. //데이터 모두 삭제 p..

스프링 2021.05.28

토비의 스프링 - 2.1 UserDaoTest다시 보기//2.2UserDaoTest개선

개요 1. UserDaoTest의 특징과 문제점 2. 테스트 검증의 자동화 3. JUnit테스트로 전환 본문 1. UserDaoTest의 특징과 문제점 테스트는 코드를 만들 때 필수적으로 요구되는 일이다. 테스트 없이는 코드가 원하는 대로 작동하는지 확신할 수 없으며 확신 없이 프로그램을 완성한다는 것은 말이 되지 않는 일이다. 1장에서 만들었던 코드도 나름대로 UserDaoTest를 통해서 테스트를 하고 있었다. 이 테스트의 특징을 알아보고 보다 효율적인 테스트 방법에 대해서 배워나가는 것이 이번 장의 목표이다. 테스트는 가능하면 작은 단위로 이루어져야 한다. UserDaoTest는 Dao가 제대로 작동하고 있는 가에 초점이 맞춰져있다. Dao의 기능을 확인하기 위해서 view까지 만들고 서버 환경까지..

스프링 2021.05.27