jMock 을 이용하여 DAO 구현 없이 테스트 하기
오늘은 JMock 에 대해서 한번 후집어 보았습니다.
일단 JMock 은 아래 설명과 같습니다.
JMock is a library that supports
test-driven development
of
Java
code with
mock objects
.
Mock objects help you design and test the interactions between the objects in your programs.
영어는 보시는 분에게 해석을 맡기고 저는 바로 jMock 을 사용하는 방법에 대해서 설명 들어갑니다.
jMock 홈페이지는 다음과 같습니다.
http://www.jmock.org
1. maven 을 이용하여 JUnit 과 jMock 을 사용할 수 있는 이클립스 프로젝트 만들기
일단 지난 포스트에서 설치했던 maven 을 기준으로 작업을 하였습니다.
(이전 포스트 링크 :
Apache Maven 으로 Eclipse 프로젝트 만들기
)
ㅁ 새로운 메이븐 프로젝트를 생성합니다.
mvn archetype:create -DgroupId=kr.co.vicki.jmock -DartifactId=vicki-jmock
ㅁ JUnit 과 jMock 을 사용하기 위해 생성된 pom.xml 을 아래와 같이 수정합니다.
-
http://www.jmock.org/maven.html
참조
ㅁ 해당 프로젝트를 이클립스 프로젝트로 변환합니다.
cd vicki-jmock
mvn eclipse:eclipse
ㅁ 생성된 프로젝트를 이클립스에서 불러옵니다.
2. Service Layer 구현 및 DAO interface 정의
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/User.java
로그인한 사용자의 정보를 가지고 있는 User 클래스
User.java 소스보기
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/ILoginDAO.java
DAO 인터페이스
ILoginDAO.java 소스보기
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/UserNotFoundException.java
사용자가 없을 경우에 대한 익셉션
UserNotFoundException.java 소스보기
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/UnmatchedPasswordException.java
패스워드가 맞지 않을 경우에 대한 익셉션
UnmatchedPasswordException.java 소스보기
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/ILoginService.java
ILoginService.java 소스보기
/vicki-jmock/src/main/java/kr/co/vicki/jmock/blog/LoginServiceImpl.java
ILoginService 구현체
LoginServiceImpl.java 소스보기
3. jMock 을 이용한 테스트 코드 작성
/vicki-jmock/src/test/java/kr/co/vicki/jmock/blog/LoginServiceImplTest.java
소스에 달린 주석을 보시면 아시겠지만, jMock 이 하는 일은 인터페이스를 가지고 mock 오브젝트를 생성한 후 오브젝트의 메소드의 파라미터로 들어올 값을 예상하여 결과값을 반환해준다던가, 메소드의 호출 회수를 정의하는 역할을 하게 됩니다. Expectations Anonymous 클래스안의 초기화 블럭에서 예상되는 로직에 대한 정의를 하게 됩니다.
조금더 자세한 구문을 확인하고 싶다면
jMock 2 Cheat Sheet
를 확인하시기 바랍니다.
처음에 예제를 보구서 색다른 문법인지 알고 혼란을 겪었었는데... 알고보니 메소드명과 괄호를 한칸 띄었을 뿐이였답니다...
참~ 쉽죠잉... 하악...
댓글
댓글 쓰기