Skip to content

Latest commit

 

History

History
258 lines (137 loc) · 10.5 KB

android-test.adoc

File metadata and controls

258 lines (137 loc) · 10.5 KB

Instrumentation 의미

System <-> Application 사이에서 일어나는 모든 상호작용에 대해서 감시가 가능. 모든 상호작용에 대해서 감시가 가능하기 때문에 Application이 실행되기 전에 미리 만들어지는게 당연하다. 같은 이유로 code에 들어가는 것이 아니라 http://jeyong.com/MoinMoin/ns/moin.cgi/AdnroidManifest[?]AdnroidManifest.xml에 선언되어야 한다.

테스트 실행

전체: adb shell am instrument -w com.example.aatg.myfirstproject.test/android.test.InstrumentationTestRunner

하나만: adb shell am instrument -w -e class com.example.aatg.myfirstproject.test.MyFirstProjectTests com.example.aatg.myfirstproject.

test/android.test.InstrumentationTestRunner

사례

카카오톡 임유진 님 ( [email protected] )의 발표

추천자료

Activity.finish(), and restarts it using the instrumentation method getActivity()

onPause() and onResume()

Instrumentation mInstr = this.getInstrumentation();

mInstr.callActivityOnPause(mActivity);

@UiThreadTest@MediumTest

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com/[http://www.google.com]"));
startActivity(intent);

기본 메뉴얼

final EditText edittext = (EditText) findViewById(R.id.edittext);

Junit 하위 클래스

==== ActivityInstrumentationTestCase2

single activity에 대한 테스트

Activity를 system infrastructure에 의해서 만듬. 일반 시스템 환경

@UiThreadTest annotation과 함께 만듬

Activity가 다른 요소들과 잘 상호작용 하는지를 테스트

MockContext 사용 불가

Mock Intent 사용 가능

키, 터치 이벤트 전달 가능

setActivityTouchMode(false)

sendKeys

setActivityIntent

==== ApplicationTestCase

onCreate after createApplication()

tearDown calls onDestroy();

mockContext 삽입가능

terminatorApplication

==== ActivityUnitTestCase

1개 Activity의 고립된 테스트

System과의 interaction에 Activity가 참가할 수 없다

System과의 최소한도로 연결되어서 Activity가 생성

일부 메소드는 Exception

==== ProviderTestCase2

ContentProvider의 고립된 테스트

MockContentResolver 사용이 제한됨

IsolatedContext 사용.

==== ServiceTestCase

startService(Intent) 혹은 bindService(Intent)를 부르면 onCreate가 호출된다.

setApplication혹은 setContext()를 호출해서 Mock 주입가능

==== AndroidTestCase

custom view, permission 관련 테스트

권한, resource접근 테스트

==== ViewAsserts

==== TouchUtils

clickView()

longClick()

== Mock

adb -e shell am instrument -w -e class com.benelogTouchActivityTests

==== 에러

unlock

=== Robotium

ActivityInstrumentationTestCase : depreciated.

  • CGLib등을 안 쓰는 EasyMock 2.4 이용. interface mocking만 가능.

=== Calabash

=== Spoon

  • 여러 Device에서 앱을 동시에 실행하고 스크린샷 제공

=== LMock

  • Jmock 스타일, Mockito 스타일 다 가능.

  • VMWare에서 만들었음. 문서화는 부족하나 예제는 잘 정리되어 있음.

  • 예제

=== ScalaMock

=== RoboSpec

== PowerMock