Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드에서 단위테스트를 위한 Junit 사용하기 (1)

안드로이드 개발
반응형

안드로이드에서 단위테스트를 위한 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 등이 그것이다. 실행 환경에 맞게 적절하게 사용하면 된다.


반응형
Posted by 녹두장군1
,