2013-08-05 225 views
0

我正在觀察Android JUnit測試用例中的不尋常行爲。測試用例用於測試簡單計算器應用程序的活動狀態管理。這是我的測試案例假設要做的。Android JUnit測試框架

  1. 發射活動(在安裝完成)
  2. 獲取參考UI Elelments(在安裝完成)
  3. 按下按鈕上寫一句話的TextView
  4. 活動的
  5. 改變方向因此被重新創建的TextView的文本被清除出
  6. 確認TextView的是乾淨的

雖然我在模擬器看到,在步驟5,活動的TextVie w顯示空文本字段,但在Junit測試代碼中,當我執行TextView.getText()時,它將返回在更改方向之前輸入的舊值。

這是我的測試用例代碼。最後斷言應該失敗,因爲活動被重建,我不由的onSaveInstanceState()/ onRestoreInstanceState()管理活動狀態

public void testOrientationState(){ 

    mActivity.runOnUiThread(new Runnable(){ 
     @Override 
     public void run() { 
      keypad.get(com.example.simplecalculator.R.id.button7).performClick(); 
      keypad.get(com.example.simplecalculator.R.id.button9).performClick(); 
     } 
    }); 
    CharSequence beforeOrientationChange = display.getText(); 
    assertEquals(beforeOrientationChange,"79"); 
    mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    getInstrumentation().waitForIdleSync(); 
    CharSequence afterOrientationChange= (CharSequence) ((TextView)mActivity.findViewById(com.example.simplecalculator.R.id.textView)).getText(); 
    assertEquals(beforeOrientationChange,afterOrientationChange); 
} 

回答

0

的Android可能會終止Activity和方向更改後重新啓動。因此,如果您想在方向更改後檢查狀態,則不應該依賴現有的Activity參考。