[Android]ActivityUnitTestCase解釋
[b]ActivityUnitTestCase[/b]
ActivityUnitTestCase這個單元測試抽象類,是為了單獨測試Activity而存在的,所以當你選擇去測試service,receive的時候就不要選擇它了,把它加入知識體系中是為了擴充套件對固有測試思路的聯絡,ActivityUnitTestCase會以與系統底層關聯性最小的代價建立出來,是一個專門測試Activity的單元測試父類。這種與系統的關聯性在setup與teardown方法中,系統已經自動幫你做了,你需要做得就是啟動這個activity去做測試。
需要注意的是,作為純單元測試,是不應該將activity執行起來進行測試的,或者不能有資料儲存和互動依賴關係,下面的方法可以在這個類中呼叫,但是被呼叫的時候會丟擲相關的excepiton資訊。
下面的方法被呼叫的時候再UI層面上你是看不到任何反應的,但是能夠呼叫以下2個方法測試activity並且傳遞相關引數。
使用方法舉例:
下面的方法也在呼叫的時候不會開啟activity,你可以使用 isFinishCalled() and getFinishedActivityRequest()在調取他們的時候攔截引數
例如,使用intent開啟某個activity:
總結一下:ActivityUnitTestCase這個抽象類的作用是,開啟某個activity,獲取activity傳遞的引數,獲取activity執行後的結果,能夠給activity提供相關的引數進行啟動,可以不執行在ui執行緒中,實現真正的單元測試activity,那麼它符合測試的基本需求,輸入相關引數,獲取期望結果,驗證。
謝謝。
ActivityUnitTestCase這個單元測試抽象類,是為了單獨測試Activity而存在的,所以當你選擇去測試service,receive的時候就不要選擇它了,把它加入知識體系中是為了擴充套件對固有測試思路的聯絡,ActivityUnitTestCase會以與系統底層關聯性最小的代價建立出來,是一個專門測試Activity的單元測試父類。這種與系統的關聯性在setup與teardown方法中,系統已經自動幫你做了,你需要做得就是啟動這個activity去做測試。
需要注意的是,作為純單元測試,是不應該將activity執行起來進行測試的,或者不能有資料儲存和互動依賴關係,下面的方法可以在這個類中呼叫,但是被呼叫的時候會丟擲相關的excepiton資訊。
createPendingResult(int, Intent, int)
startActivityIfNeeded(Intent, int)
startActivityFromChild(Activity, Intent, int)
startNextMatchingActivity(Intent)
getCallingActivity()
getCallingPackage()
createPendingResult(int, Intent, int)
getTaskId()
isTaskRoot()
moveTaskToBack(boolean)
下面的方法被呼叫的時候再UI層面上你是看不到任何反應的,但是能夠呼叫以下2個方法測試activity並且傳遞相關引數。
getStartedActivityIntent() //獲取到當前被測試activity的intent
getStartedActivityRequest() //獲取被測activity的request code
startActivity(Intent) //開啟activity但是不在ui執行緒中展示
startActivityForResult(Intent, int) //獲取activity執行後的結果,呼叫後再activity執行結束後呼叫onActivityResult
使用方法舉例:
public class MyActivity extends Activity {
...
static final int PICK_CONTACT_REQUEST = 0;
protected boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
// When the user center presses, let them pick a contact.
startActivityForResult(
new Intent(Intent.ACTION_PICK,
new Uri("content://contacts")),
PICK_CONTACT_REQUEST);
return true;
}
return false;
}
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
// A contact was picked. Here we will just display it
// to the user.
startActivity(new Intent(Intent.ACTION_VIEW, data));
}
}
}
}
下面的方法也在呼叫的時候不會開啟activity,你可以使用 isFinishCalled() and getFinishedActivityRequest()在調取他們的時候攔截引數
finish() //activity 完成
finishFromChild(Activity) //子activity呼叫finish方法的時候被呼叫
finishActivity(int) //強制停止之前你使用 startActivityForResult方法開啟的activity
例如,使用intent開啟某個activity:
mHomeActivity = launchActivityWithIntent("com.ziyu.activity", HomeActivity.class, intent);
總結一下:ActivityUnitTestCase這個抽象類的作用是,開啟某個activity,獲取activity傳遞的引數,獲取activity執行後的結果,能夠給activity提供相關的引數進行啟動,可以不執行在ui執行緒中,實現真正的單元測試activity,那麼它符合測試的基本需求,輸入相關引數,獲取期望結果,驗證。
謝謝。
相關文章
- [Handler]android-Handler解釋Android
- 具體解釋Android中AsyncTask的使用Android
- Android Rxjava:圖解不一樣的詮釋AndroidRxJava圖解
- android中drawable資源的解釋及例子Android
- 誰來解釋解釋場景。
- HDR解釋
- 釋出android app到android market的方法AndroidAPP
- Android Intent.FLAG_NEW_TASK詳解,包括其他的標記的一些解釋AndroidIntent
- Android客戶端請求伺服器端的詳細解釋Android客戶端伺服器
- HBuilder Android APP打包釋出UIAndroidAPP
- Android Studio 0.5.8釋出Android
- 谷歌釋出Android Auto API谷歌AndroidAPI
- Spring for Android 1.0釋出SpringAndroid
- Android 4.2即將釋出Android
- Genius-Android 2.4.0 釋出,Android 開源框架Android框架
- OCVMax 工具解釋
- DCDiag命令解釋
- ORACLE Granule 解釋Oracle
- epoll的解釋
- 正式釋出Android Things 1.0Android
- 谷歌 Android 12 Go 正式釋出!谷歌AndroidGo
- Android 11正式版釋出Android
- Android 11正式版釋出!Android
- 釋出 Android Wear 公測版Android
- Android Studio 之 註釋模板Android
- Android Studio 3.0 Canary 釋出Android
- android簽名生成和釋出Android
- 如何釋出一個Android庫Android
- Android Studio如何釋出APKAndroidAPK
- Android Studio 1.3 正式釋出Android
- 如何釋出Android應用程式Android
- [Android]再簡單解釋一下androidtest包下的其他測試類Android
- 【Android AAR】快速釋出 Android Library 專案到 JCenterAndroid
- JavaScript註釋:單行註釋和多行註釋詳解JavaScript
- dd命令的解釋
- npm命令及解釋NPM
- Python Mixin解釋Python
- json的解釋JSON