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);
번역 : http://blog.naver.com/huewu/110089695301 ,http://blog.naver.com/huewu/110089769967[http://blog.naver.com/huewu/110089769967]
final
EditText edittext = (EditText) findViewById(R.id.edittext);
==== 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.
=== RoboElectric
=== Android Mock
-
CGLib등을 안 쓰는 EasyMock 2.4 이용. interface mocking만 가능.
=== Calabash
=== Spoon
-
여러 Device에서 앱을 동시에 실행하고 스크린샷 제공
=== LMock
-
Jmock 스타일, Mockito 스타일 다 가능.
-
VMWare에서 만들었음. 문서화는 부족하나 예제는 잘 정리되어 있음.
=== ScalaMock
-
전에는 Borachio
-
Mockito가 이제 Android 지원하므로 더 이상 나는 지원안한다고 쿨하게 밝힘.
-
Roboguice + Borachio 예제 프로젝트 https://github.com/jaley/borachio-warehouse
-
Android + ScalaMock 예제 설명
-
http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-1/
-
http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-2/
-
http://www.paulbutcher.com/2011/03/mock-objects-on-android-with-borachio-part-3/
=== RoboSpec
-
Scala. Robolectric + Specs2 Mockitohttps://code.google.com/p/mockito/issues/detail?id=308Android에서 Mockito에러페이지 : https://code.google.com/p/mockito/issues/detail?id=57
== PowerMock