회원 목록 추가
testAdd() 메소드를 만들고 회원 목록을 추가하는 기능을 추가합니다.
public void testAdd() {
Member member = createMember();
mr.add(member);
assertEquals(1, mr.getNumberOfMembers());
}
createMember() 메소드에서 Member 객체를 받아온 뒤 MeberRepository 타입의 변수 mr의 add(Member member) 메소드를 통해서 DB에 Member 객체의 data를 넣어줍니다. 그리고 DB에 정말 들어갔는지 DB에 들어있는 Member Data의 수를 getNumberOfMembers() 메소드를 사용해서 확인합니다.
이 test 클래스에서 두 개의 메소드에 대한 test를 하게 되는 거나 마찬가지기 때문에 별로 test 메소드가 좋아보이지는 않지만 일단 개발을 하고 나중에 리팩토링을 하도록 하겠습니다. 헤헤헷; 일단 getNumberOfMembers() 메소드를 사용하는 부분은 주석처리를 하고 add() 부터 구현합니다.
개발 되는 순서
- MemberRepository 인터페이스에 void add(Member member); 이렇게 한 줄을 추가합니다.
- MemberRepositoryImple 클래스에 void add(Member member) { memberDao.add(member); } 이렇게 구현합니다.
- MemberDao 인터페이스에 void add(Member member); 이렇게 한 줄을 추가합니다.
- SqlmapMembeDao 클래스에 void add(Member member){ getSqlMapClientTemplate().insert("Member.insert", newMember); } 이렇게 추가합니다.
- 여기서 test를 한번 해보면...
- Member.xml에서 insert라는 id를 찾을 수 없기 때문에 에러가 발생합니다.
- Member.xml에 다음과 같이 sql문을 추가합니다. <insert id="insert" parameterClass="member">
INSERT INTO Member(name, email
<isNotNull property="messengerId">, messengerId</isNotNull>
<isNotNull property="phone">, phone</isNotNull>
<isNotNull property="blugAddress">, blugAddress </isNotNull>)
VALUES(#name#, #email#
<isNotNull property="messengerId">, #messengerId#</isNotNull>
<isNotNull property="phone">, #phone#</isNotNull>
<isNotNull property="blugAddress">, #blugAddress#</isNotNull>);
</insert>
이제 주석처리 했던 부분을 제거하고 getNumberOfMembers() 이 메소드도 위의 순서대로 개발을 합니다.
add()를 해도 AbstractTransactionalDataSourceSpringContextTests 이 클래스의 특성상 롤백이 되기 때문에 test가 끝나고 DB에 데이터는 저장되어 있지 않습니다.
관련글 :테스트 코드에서의 중복 제거 작업