안드로이드 프레임워크에는 유닛 테스트를 위해서 JUnit이 들어있고, 그것을 서포트하기 위한 android.test 라고 하는 패키지가 들어있습니다. 제대로 문서화도 되어있지 않았는데 Eclipse ADT 플러그인에서 Test Project를 실행하기 쉽게잘 구성이 되었네요. Android 프로젝트에서 JUnit을 사용하기 위한 과정을 정리해보겠습니다. Eclipse에서의 JUnit이나 JUnit을 사용하는 방법론 자체는 다른 문서들을 검색해보세요.

ApiDemos의 JUnit Test 프로젝트 생성
junit_1.jpg

먼저 다들 잘 아시는 ApiDemos 프로젝트를 열어보시면 src밑에 실제 프로그램에 대한 소스가 존재하구요. 별도로 tests라고 하는 폴더가 존재하는 것을 확인하실 수 있습니다. 그리고 그 밑은 원래 src 폴더와 똑같은 구조로 폴더들이 생성되어있는 것을 볼 수 있습니다. 테스트를 위한 소스구조는 보통 이렇게 구성을 한다는 것을 아시면 될것 같구요.

테스트 프로젝트를 불러오는 방법은 ApiDemos를 이클립스로 불러오는 것과 동일합니다.
1. New -> Project -> Android Project
2. Create project from existing source 에서 ApiDemos/tests 폴더를 골라주세요.
3. java src에서 에러가 난다면 Project->Properties->Java Build Path 로 가셔서
4. Projects 탭에 Add를 해서 Test할 원래 프로젝트인 ApiDemos를 골라주시면 됩니다.

junit_2.jpg Run Configurations에 Android JUnit Test란 곳에서 Application 을 실행하는 것과 동일한 방법으로 새로운 Test를 생성하면 테스트를 실행할 수 있습니다.

Test도 어떻게 사용하는지 보고 싶다면 ApiDemos를 참고하면 되겠죠. ApiDemos는 여러모로 개발자의 필수 레퍼런스 프로젝트 입니다. JUnit 자체만 그대로 사용하는게 아니라. Android에서 JUnit을 지원하는 클래스들을 어떻게 사용하는지 참고하시는게 좋습니다.

새로운 JUnit Test 프로젝트 생성

이번엔 기존에 생성되어있던 Test 프로젝트를 불러오는게 아니라 내가 작성한 애플리케이션 프로젝트의 테스트 프로젝트를 생성하는 법입니다. 물론 ADT에 잘되어있습니다.
- New -> Project -> Android Test Project 선택

junit_3.jpg  
- Test Target에 Test를 할 원래 프로젝트를 찾아넣으시구요
- Content의 Location은 사실 아무데나 해도 에러는 안나지만 관리하기 편하고 컨벤션에 따라서 원래 프로젝트 디렉토리 + \tests 로 넣어줍니다.
- Finish하면 새로운 테스트 프로젝트가 생성됩니다.

Instrumentation
에뮬에 보면 Dev Tools라는 곳 밑에 Instrumentation 밑에 들어가면 테스트 프로젝트에서 등록한 Instrumentation들이 들어가 있는 것을 확인할 수 있습니다. 이클립스랑 연결된 상태면 굳이 필요없는 것 같은데 장치에서 이클립스 연결안되어있을때도 눌러보기 위함이 아닌가 싶네요.

android.test.*
Android UI나 콤포넌트 구조에서도 다양한 테스트를 하기 위해 단순히 TestCase만을 상속해서 쓰지 않습니다. ActivityUnitTestCase, ApplicationTestCase, ServiceTestCase 등 Android 환경에서 테스트하는데 도움을 주는 TestCase들이 구현되어있으니 적절한 것을 상속받아서 처리하면 됩니다.

안드로이드의 너무 깊숙한 곳의 API를 쓰게 되면 버전이 올라가면서 하위 호완성등이 잘 안맞는 경우도 있기 때문에 그런 경우 체크하기 위해서 JUnit을 안쓸수가 없겠더군요. 별로 그동안 코드 관리 안하고 막 코딩하다가 최근에 JUnit관련해서 ADT가 잘 정리되었기는 한데 여전히 문서화는 제대로 안되어있어서 정리해 올립니다.