0

我在我的 Android JUnit 测试用例中观察到异常行为。测试用例用于测试简单计算器应用程序的 Activity 状态管理。这是我的测试用例应该做的。

  1. 启动活动(在设置中完成)
  2. 获取对 UI 元素的引用(在设置中完成)
  3. 按下按钮在 TextView 上写一些东西
  4. 更改 Activity 的方向,以便重新创建它并清除 TextView 的文本
  5. 验证 textview 是否干净

虽然我在模拟器上看到在第 5 步,活动的 TextView 显示空文本字段,但在 Junit 测试代码中,当我执行 TextView.getText() 时,它返回在更改方向之前输入的旧值。

这是我的测试用例代码。最后一个断言应该失败,因为重新创建了 Activity 并且我没有通过 onSaveInstanceState()/onRestoreInstanceState() 管理 Activity 状态

    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);
}
4

1 回答 1

0

ActivityAndroid 可能会在方向更改后终止并重新启动它。Activity因此,如果要检查方向更改后的状态,则不应依赖现有参考。

于 2013-08-05T11:32:28.630 回答