我在我的 Android JUnit 测试用例中观察到异常行为。测试用例用于测试简单计算器应用程序的 Activity 状态管理。这是我的测试用例应该做的。
- 启动活动(在设置中完成)
- 获取对 UI 元素的引用(在设置中完成)
- 按下按钮在 TextView 上写一些东西
- 更改 Activity 的方向,以便重新创建它并清除 TextView 的文本
- 验证 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);
}