안녕하세요. 오늘은 android junit 사용하기 입니다.

이곳을 클릭하시면 사용방법이 자세히 나와 있고 이 글에서는 그 후에 필요한 내용에 대해 블로깅하고 있습니다.

그 밖에 안드로이드펍에서 google의 문서를 번역해 놓았네요. 여기 클릭해주세요.

제 글은 Android JUnit 중 Activity의 unit 테스트를 하기 위함입니다. 위 링크들을 보시면 button 같은 객체들을 테스트하는 방법이 나와있습니다. 제 프로그램 중 메인 Activity의 onCreate 함수에서 생성된 초기화 데이터들(xml을 파싱해서 얻는)을 저장하는 부분이 있습니다. 이때, xml 파서를 직접만들었기 떄문에 정확한 데이터 검증이 필요하게 됩니다.

Android JUnit의 actvitiy를 테스트하기 위해선 ActivityInstrumentationTestCase2 클래스를 상속받아야 합니다. (google의 문서에 나와있습니다.)

Android JUnit 테스트 프로젝트를 만든 후 JUnit Test Case를 만들때 superclass 를 ActivityInstrumentationTestCase2를 지정합니다.

일단 전체 코드를 한번 보겠습니다.

MyClassActivity.java

package com.myclass;

import android.app.Activity;
import android.os.Bundle;

public class MyClassActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

myClassTest.java

import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;
import com.myclass.MyClassActivity;

public class myClassTest extends ActivityInstrumentationTestCase2< MyClassActivity > {
	
	MyClassActivity myClassActivity;
	
	public myClassTest() { // 생성자 함수가 꼭 필요합니다.
		super( MyClassActivity.class );
	}

	@Override
	protected void setUp() throws Exception { // 각각의 테스트함수들이 실행되기 전에 실행되는 함수
		super.setUp();
		
		setActivityInitialTouchMode( false );
		myClassActivity = getActivity(); // 생성된 activity의 레퍼런스를 갖고옵니다.
		Log.d( "MyClassTest", "setUp()" );
	}

	@Override
	protected void tearDown() throws Exception { // 각각의 테스트함수들이 종료되기 전에 실행되는 함수
		// TODO Auto-generated method stub
		super.tearDown();
		Log.d( "MyClassTest", "tearDown()" );
	}
	
	public void testFunc1() {
		Log.d( "MyClassTest", "testFunc1()" );
	}
}


test case 를 처음 생성하시면 <T> 가 생기는데 T를 테스트하고 싶은 클래스로 바꿔 주세요.

그 후 생성자 함수를 만들어야 합니다. 생성자 함수는 위 코드에 나와있으니 참조하세요. 위 코드가 Activity TestCase class의 기본코드 입니다. setUp(), tearDown() 함수를 잘 쓰셔서 이용하면 될 것 같습니다.

참조해야 할 부분은 setActivityInitialTouchMode( false ) 부분인데요. 터치를 끄는 기능을 합니다. 아직 위 코드에 대한 필요성은 느끼지 못하고 있으나, 구글의 표준문서에 나와있네요. 

위 코드를 실행해 보시면 testFunc1() 함수가 실행이되고 아래 그림과 같은 결과를 확인 할 수 있습니다.


Log 화면


Test 결과화면



Bloger : molatk.net

+ Recent posts