2013-08-05 168 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参考。