안드로이드에서 단위테스트를 위한 Junit 사용하기 (1)
프로그램을 개발할 때 마다 공통적으로 반복되는 부분들이 있다. 그리고 개발 생산성과
효율을 높이기 위해 단위별로 테스트 하는 것이 요즘 추세이다. 단위별로 테스트하고
완성된후 다시 합쳐 전체적인 테스트를 진행하는 것이다.
이런 작업들을 하기위해서 Junit framework 을 eclipse 플러그인으로 만들어 쉽게 사용할수
있도록 제공해 준다. Java 나 Web Application 에서는 많이 사용해봐서 익숙하지만
Android 에서는 처음이라 이렇게 아티클을 작성하게 되었다.
안드로이드 SDK 를 보게 되면 내부에 Junit 클래스가 존재한다. 그러므로 이전에 작업했던
환경설정과 실행법이 같다. 별 어려움 없이 진행이 가능하며, 단지 특이한 점은
안드로이드 에서 제공하는 TestCase 들이 여럿있다는 것이다. DB 테스트를 위해
DBUnit 라는 것이 있듯이 안드로이드에서도 Activity 단위별로 테스트 할수 있는
ActivityUnitTestCase, Service 를 테스트 해볼수 있는 ServiceTestCase 등이 있다.
전부 조사해보지 않아 상세하게 기술 해볼수는 없지만 우선 2편에서 ActivityUnitTestCase
사용법에 대해 대략적인 사용법을 설명하였다.
1. Android Junit project 생성
안드로이드에서 단위테스트를 시행하기 위한 Junit 설정은 프로젝트 생성부터 다르다.
기존에 있는 프로젝트를 대상으로 Junit 을 실행하는 방법과 프로젝트 자체가 Junit 만
시행할수 있는 프로젝트로 나누어 생성할수 있다.
Android Test Project 를 선택하면 아래의 설정화면이 나오는데 Test Target 를 설정하는
곳이 있다. 현재 만들 프로젝트를 Junit 으로 사용할것인지, 아니면 이미 만들어진
프로젝트를 상대로 구동할것인지에 대한 내용을 선택한다. 그리고 Build Target 을
선택할때에는 Target 이 되는 SDK와 맞아야 한다.
기존에 존재하는 프로그램을 타겟으로 프로젝트를 생성하게 된다면 AndroidManifest.xml
에 설정값이 바뀌게 된다. <instrumentation android:targetPackage =
"com.success" android:name="android.test.InstrumentationTestRunner" />
와 같이 targetPackage 값이 target 으로 정한 패키지 주소가 된다.
그리고 아래쪽에 탭중 Application 을 클릭하게 되면 사용 Uses Library 로
android.test.runner 를 사용하고 있는 것을 볼수 있다.
위의 두가지는 Junit을 돌리기 위한 필수 요소 이다. 이것은 일반 프로젝트에서 볼수
없는 것으로 기존 프로젝트에서 사용하고 싶다면 설정을 해줘야한다.
만든 프로젝트를 실행해보자. 프로젝트를 선택하고 오른마우스를 클릭하여
Debug/Run Configuration 선택한다. Android Junit Test 란에 보면 프로젝트가
추가 된 것을 볼수 있다. 그 프로젝트를 선택하고 오른쪽에 Debug 를 클릭해
실행하면 된다. 또 다른 방법은 Junit 클래스를 선택하고 직접 Android Junit Test 를
실행해도 된다.
2. 기존 프로젝트에서 Android Junit 설정하여 사용하기
Android Junit Project 로 생성한 프로젝트가 아닌 일반 프로젝트에서 테스트할 Junit 클래스를
만들어 실행하고 싶을때가 있을것이다. 일반 프로젝트에서 아무리 Junit 테스트 클래스를 만들어
실행해도 Instrumentation runner 가 없다고 에러가 날것이다. 제대로 실행할려면 위에서 말한
두가지 요소를 첨부해야 한다.
ApplicationManifest.xml 을 클릭한다. Application 탭을 클릭하면 아래쪽에 Application Node
란을 볼수 있다. 리스트 안에보면 Uses Library 로 android.test.runner 을 추가한다
element 를 Uses Library 로 선택한다
두번째는 Instrumentation 탭을 클릭한다 . 여기서 Add 를 클릭하고 Instrumentation 을
선택한다. 그리고 Name 란에 android.test.InstrumentationTestRunner 와 Target Package 에
테스트할 패키지를 넣는다
다시 Debug Configuration 에 들어가서 확인하면 Instrumentation runner
값이 들어간 것을 확인할수 있을 것이다
아래 Debug 를 실행하면 AVD(android virtual device) 실행창이 뜬다. 적절한 AVD 를
선택하고 start 를 클릭한다.
AVD 가 실행되었다면 실행된 AVD 를 타겟으로 Debug 가 실행된다. Junit 은 프로젝트
패키지에서 junit.framework.TestCase 상속받은 Junit 클래스를 찾아 실행시킨다. Junit
익스플로어에서 실행한 결과 값을 보여주는데 시간과 함수명이 나오는 것을 볼수 있다
그리고 다시 시작해서 테스트를 하고 싶으면 왼쪽 패키지를 클릭하고 오른쪽마우스로
Debug / Run 을 실행하면 된다.
테스트를 위한 Junit test case 클래스는 새로운 클래스 만들 때 Android 라이브러리에
포함된 Junit.framework.TestCase 상속받아 만들면 된다. 이것은 흔히 자바에서 사용하는
단순한 형태의 Case 를 실행하기 위한 클래스이며 UI 나 다양한 컴퍼넌트 구조에서
사용할수 있는 클래스는 따로 있는데 ActivityUnitTestCase, ApplicationTestCase,
ServiceTestCase 등이 그것이다. 실행 환경에 맞게 적절하게 사용하면 된다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) SurfaceView 를 이용하여 터치로 이미지 이동시키기 (22) | 2010.08.13 |
---|---|
Canvas 를 이용해서 화면에 이미지 확대, 축소, 변경하기 (8) | 2010.08.10 |
안드로이드 디자인 색상표 ARGB 값을 알아볼수 있는 플래쉬 파일 (0) | 2010.08.09 |
안드로이드 Intent 를 사용하여 이미지,영상,전화번호부등 가져오기 (1) (7) | 2010.08.07 |
안드로이드에서 단위테스트를 위한 Junit 사용하기 (2) (0) | 2010.08.07 |
안드로이드에서 단위테스트를 위한 Junit 사용하기 (1) (1) | 2010.08.07 |
안드로이드 (android) 플러그인과 SDK 가 업데이트 에러 날 때 (1) | 2010.08.04 |
구글에서 GMail 계정을 이용해 SMTP 로 안드로이드 메일보내기 (49) | 2010.08.02 |