여럿이 어플리케이션을 개발하다보면 레이어를 나눠서 개발을 진행하곤 합니다. 이때, 각 레이어는 인터페이스를 사용해서 통신을 하는 게 일반적일 겁니다. 웹의 경우 클라이언트의 요청을 전달받는 컨트롤러와 비즈니스 로직을 처리하는 도메인 부분 그리고 영속성을 관리하는 부분 등이 존재하게 되는데, 각 부분은 레이어를 구성하게 될거고 인터페이스를 통해서 서로 통신하게 될 겁니다.
각 레이어를 나눠서 개발하다보면 아직 상대방이 구현하지 않은 기능을 내 코드에서 필요로 하는 경우가 있습니다. 이럴 때 mock 이란 놈을 사용하게 되죠. 자바에서는 jmock이나 easymock을 사용해서 이런 mock 객체를 생성하곤 하는데, 사실, 이 두 라이브러리를 사용하는 게 그리 쉽지만은 않습니다. 일단, 외워야 할게 많기도 하고, mock 라이브러리 자체가 검증(assertion) 기능이 있어서 이 두 라이브러리를 잘 사용하려면 그런 기능도 익혀야 하죠.
이런 라이브러리가 좋긴 하지만 제가 보통 작업을 할 때에는 이런 다양한 기능을 제공하는 mock 라이브러리가 필요한 것이 아니라, 제가 원하는 기능을 (주로 가짜로 동작하는 기능을) 제공해주는 mock이 필요한 경우가 더 많았습니다. 그래서, 인터페이스를 직접 implements 한 mock 클래스, 즉 또 다른 구현 클래스에 가짜 구현 코드를 넣는 방법을 사용하는 경우도 많았습니다. 하지만, 이 경우 인터페이스가 변경되면 mock 클래스의 코드에 (필요하지 않아도) 코드를 추가해주어야 한다는 불편함이 따랐습니다.
이런 불편함을 없애고자 간단하게 mock 객체를 만들어주는 유틸리티를 하나 만들었죠. 이름도 tle 프로젝트에서 만든 mock 이라는 의미로 tlemock으로 했답니다. 그런데, 요즘 제가 Maven을 주로 사용하는 터라, Maven 프로젝트에서 제가 만든 tlemock을 쉽게 사용했으면 좋겠다는 생각이 들었습니다.
그래서!!!, tlemock을 maven 중앙 리포지토리에 등록하기로 결심했습니다. tlemock을 maven 중앙 리포지토리에 등록하기 위해 도메인도 따고(^^;) 안내 페이지도 만들었습니다. 배포판도 구글 코드를 통해서 배포했구요. 그리고 나서, 지난 금요일 저녁 maven 중앙 리포지토리에 올려 달라는 요청을 보냈습니다.
그리고, 드디어 오늘 maven 중앙 리포지토리에 tlemock이 올라갔습니다. ^^ 아,, 뭐랄까... 제가 만든 아주 작지만 그래도 누군가에겐 저처럼 유용하게 쓰일 수 있는 mock 라이브러리를 maven 프로젝트에서 손쉽게 사용할 수 있게 되었다는 생각에,, 왠지 모를 뿌듯함이 밀려오더군요. 살짝이 흥분도 되구요. (거짓말 좀 보태면 감동받은 상태라고 할 수도.... )
이번주 내에 tlemock을 사용하는 방법을 정리해서 자바캔에 올릴까 합니다. 그리고, 몇몇 사이트에 공지할 생각이구요.
http://www.tleproject.net/tlemock 사이트에 어설픈 영어로 정리한 tlemock 문서가 있습니다. 영어는 엉망이지만 샘플 코드를 보시면 코드를 보시면 비교적 쉽게 어떤 식으로 tlemock이 동작하는 지 아실 수 있을 겁니다. ^^ 궁금하시다면, 한번 방문해보세요.
* 처음으로 전 세계 개발자에게 기여를 할 수도 있다는 생각에,,, 정말 흥분되는 하루였습니다.