Whiteship's Note


5-4. DAO 테스트 만들기



1. test/src 소스 폴더에 keesun.messenger 패키지 안에 MessengerDaoTest 클래스를 생성합니다.
사용자 삽입 이미지
2. 이 클래스는 AbstractTransactionalDataSourceSpringContextDaoTest 이 클래스를 상속 받습니다. 이 클래스는 Spring에 있는 AbstractTransactionalDataSourceSpringContextTests 클래스를 상속하여 만들어진 클래스 입니다.

public class MessengerDaoTest extends AbstractTransactionalDataSourceSpringContextDaoTest{

 

3. 테스트 대상인 MessengerDao를 protected로 변수를 만들고 다음과 같이 bean이 생성됐는지 확인하는 테스트를 만듭니다.

       protected MessengerDao messengerDao;

 

       public void testValidBean(){

             assertNotNull(messengerDao);

       }


테스트는 실패 합니다. 이전 글에서 등록한 빈의 이름이 memberDao로 쓰였네요;; 오타입니다. messengerDao로 수정을 하고 다시 테스트를 하면 통과합니다.

4. Member 객체를 memberDao를 이용해서 DB에 집어 넣는 테스트를 해봅니다. 이 때 MessengerFixture라는 객체를 만들어서 넘겨주는 클래스를 만들어서 사용합니다.

       public void testModel(){

             Messenger m = MessengerFixture.getAMessenger();

             messengerDao.add(m);

             assertTrue(m.getMessengerId()>0);

       }

//MessengerFixture.java

public class MessengerFixture {

 

       public static Messenger getAMessenger() {

             return new Messenger();

       }

}


5. 하지만 이 때 에러가 발생하는데 이유는 필수 요소인(nullable=false) 필드들의 값을 입력하지 안았기 때문에 발생하게 됩니다. 따라서 다음과 같이 수정을 하면 테스트가 통과 합니다.

public void testModel(){

      Messenger m = MessengerFixture.getAMessenger("keesun", "skype");

      messengerDao.add(m);

      assertTrue(m.getMessengerId()>0);

}
//MessengerFixture.java

public static Messenger getAMessenger(String m_id, String m_type) {

     Messenger messenger = new Messenger();

     messenger.setM_id(m_id);

     messenger.setM_type(m_type);

     return messenger;

}

top


5-3. DAO 만들기



1. MessengerDao 인터페이스를 src 소스폴더에 keesun.member.dao 패키지 안에 만듭니다.
사용자 삽입 이미지

2. MessengerDao 인터페이스는 GenericDao 인터페이스를 상속받습니다. GenericDao는 generic을 사용하고 있는데요 첫번째 인자는 클래스 타입이고 두번째 인자는 클래스의 주키값의 타입을 넣습니다.

public interface MessengerDao extends GenericDao<Messenger, Integer>{

 

}


3. MessengerDao를 구현할 MessengerDaoHibernate 클래스를 만듭니다. 이 클래스는 MessengerDao를 implements하고 GenericDao를 구현해 둔 AbstractHibernateGenericDao 클래스를 상속 받습니다.

public class MessengerDaoHibernate extends AbstractHibernateGenericDao<Messenger, Integer>

implements MessengerDao{

}


4. 그러면 에러가 발생하는데 이 때 다음과 생성자를 만들면 에러가 사라집니다. 이것으로 Dao 구현이 끝났습니다.

       protected MessengerDaoHibernate() {

             super(Messenger.class);

       }


5. 방금 만든 dao를 bean으로 등록합니다.

사용자 삽입 이미지

'Hibernate > 주소록 만들기' 카테고리의 다른 글

6.3. 연관 매핑 정보 입력하기  (2) 2007.01.18
6.2. 필요한 멤버 변수 추가  (0) 2007.01.18
6.1. 모델 간의 연관 관계 파악  (0) 2007.01.18
6. 연관 관계 매핑하기  (0) 2007.01.18
5-4. DAO 테스트 만들기  (2) 2007.01.11
5-3. DAO 만들기  (0) 2007.01.11
5-2. 간단한 모델 테스트  (0) 2007.01.11
5-1. 모델 만들기  (0) 2007.01.11
5. 모델, DAO 까지 개발 공정  (0) 2007.01.11
4. CSS 적용  (0) 2007.01.08
3. 화면 만들기  (0) 2007.01.07
top


5-2. 간단한 모델 테스트



1. 간단한 테스트를 위해서 sandbox.keesun 패키지 안에 MessengerTest.java를 만듭니다.
사용자 삽입 이미지
2. MessengerTest는 AbstractTransactionalDataSourceSpringContextDaoTest 클래스를 상속 받습니다.

public class MessengerTest extends AbstractTransactionalDataSourceSpringContextDaoTest


3. 다음과 같이 코딩합니다.

       public void testCRUD() {

             Messenger m = new Messenger();

             m.setM_id("keesun");

             m.setM_type("skype");

             s.save(m);

             assertTrue(m.getMessengerId() > 0);

       }


DB에 저장이 된다면 객체에 messengerId가 데이타를 가지게 되므로 그것을 확인하는 코드입니다.

테스트를 돌리면 실패합니다. bean을 등록하지 않아서 그렇습니다. 헤헷;
bean은 다음과 같이 applicationContext-dao.xml에 등록합니다.

사용자 삽입 이미지

4. 이제 테스트를 돌리면 pass합니다. :)
사용자 삽입 이미지

'Hibernate > 주소록 만들기' 카테고리의 다른 글

6.2. 필요한 멤버 변수 추가  (0) 2007.01.18
6.1. 모델 간의 연관 관계 파악  (0) 2007.01.18
6. 연관 관계 매핑하기  (0) 2007.01.18
5-4. DAO 테스트 만들기  (2) 2007.01.11
5-3. DAO 만들기  (0) 2007.01.11
5-2. 간단한 모델 테스트  (0) 2007.01.11
5-1. 모델 만들기  (0) 2007.01.11
5. 모델, DAO 까지 개발 공정  (0) 2007.01.11
4. CSS 적용  (0) 2007.01.08
3. 화면 만들기  (0) 2007.01.07
2. 주소록 ERD 수정  (0) 2007.01.06
top