5-4. DAO 테스트 만들기
1. test/src 소스 폴더에 keesun.messenger 패키지 안에 MessengerDaoTest 클래스를 생성합니다.
bl175.bmp2. 이 클래스는 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;
}