0

Android JUnit テスト ケースで異常な動作が見られます。このテスト ケースは、単純な電卓アプリケーションのアクティビティ状態管理をテストするためのものです。これが私のテストケースの想定です。

  1. 起動アクティビティ (セットアップで完了)
  2. UI 要素への参照を取得します (セットアップで実行)
  3. ボタンを押して TextView に何かを書き込みます
  4. Activity の向きを変更して再作成し、TextView のテキストを消去する
  5. テキストビューがクリーンであることを確認する

ステップ5でエミュレーターに表示されている間、アクティビティのTextViewには空のテキストフィールドが表示されますが、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);
}
4

1 に答える 1

0

Android はActivity、向きの変更後に を終了して再起動する場合があります。Activityしたがって、方向変更後の状態を確認する場合は、既存の参照に依存しないでください。

于 2013-08-05T11:32:28.630 に答える