18

Android アプリの自動テスト スイートに取り組んでおり、アクティビティが完全に読み込まれるのを待っているときに問題が発生しました。getActivity を呼び出すことはできますが、テストで確認したいアクティビティが表示されたからといって、そのアクティビティのコンポーネントを使用する準備ができている (完全に読み込まれている) とは限りません。Activity API を調べても何も見つかりませんでした。また、他の方法は侵襲的すぎるようで、テストの初期状態を台無しにしてしまいました。現在のアクティビティがロードされているかどうかをアプリまたは VM に尋ねる方法があるかどうかは誰にもわかりませんか?

4

2 に答える 2

2

コメントで述べたように、ビュー階層は の呼び出し後に動作するはずsetContentView()ですonCreate()。アクティビティやテストクラスでこのような問題が発生したことはありません..

これがこの特定のケースに役立つかどうかはわかりませんが、一般に、UI イベント キューがいつ空になるかは を呼び出すことで判断できますgetInstrumentation().waitForIdleSync()。これは、処理する UI イベントがなくなるまでブロックされます。

于 2010-01-18T23:34:54.663 に答える
1

setUp()テストケース拡張でこのようなメソッドを作成する場合ActivityInstrumentationTestCase2<MyActivity>

@Override
protected void setUp() throws Exception {
    super.setUp();

    final MyActivity activity = getActivity();

    tv1 = (EditNumber)activity.findViewById(resId1);
    tv2 = (EditNumber)activity.findViewById(resId2);
}

アクティビティは完全に機能し、レイアウトが読み込まれます。この場合、ビューとそのコンテンツにアクセスできるという事実によって示されます。

@SmallTest
public void testSimpleCreate() {
    final MyActivity activity = getActivity();
    assertNotNull(activity);

    assertNotNull(tv1);
    assertEquals("mystr1", tv1.getText().toString());
    assertNotNull(tv1);
    assertEquals("mystr2", tv2.getText().toString());
}
于 2010-01-18T22:36:25.080 に答える