robotium、listviewのテスト方法

どのように私はrobotiumによってlistviewをテストできますか?私はちょうどoncreateイベントが項目に入るかどうか確認したい。

私のアクティビティにはメソッドがあります:

private void initListView() {
    Adapter adapter = 
            new Adapter(this, myRepository.findAll());
    listView.setAdapter(adapter);
}

MyRepositoryはListを返します。 ActivityInstrumentationTestCase2では、いくつかのアイテムをリポジトリに配置し、listViewに要素が含まれているかどうかをテストします。

public void testListView_IsNotEmpty() {
    Item i = new Item();
    i.setSomething("item1");
    getActivity().getMyRepository().insert(i);
    assertTrue(solo.searchText("item1"));
}

それはrobotium経由で可能ですか?

宜しくお願いします

2
テストケースで getActivity()の呼び出しの前にリポジトリにアクセスできますか?前にテキストを追加するだけで、実際に getActivity()を呼び出すまでアクティビティは作成されません。それ以外の場合は、アダプタに DataSetObserver を登録して、リポジトリを混乱させたときに呼び出します。
追加された 著者 Jens,
助けても、私は活動の前にデータを読み込むことはできません
追加された 著者 reizals,

1 答え

これはフレームを模倣するための明確なケースです。 jMockitは、スタブアウトされたアンドロイドライブラリに対して使用するのが最も進んで適切なので、私はrecMmentします。あなたはアンドロイド自身が提供するクラスをテストするのが好きではないので(あなたは正しいことを暗黙のうちに信じています)、テストする必要があります:

  • リポジトリにバリューリストを依頼しました
  • この値リストを使用してアダプタを作成しました。
  • このアダプタはリストビューに渡されました

テストケースは次のようになります。

@Test
public void testThatListInitializedProperly(@Mocked final ListView listView,
                                            @Mocked final YourRepository repository,
                                            @Mocked(methods = {"initListView"}, inverse=true) final YourActivity activity, 
                                            @Mocked final Adapter adapter
 ) {
    new Expectations() {
        {
               repository.findAll(); returns(someList);

               new Adapter(activity, someList); returns(adapter);

               listView.setAdapter(adapter);

        }
    };

    activity.initListView(listView);

}

(私は簡単なモックのためのインターフェイスを調整したことに注意してください)

1
追加された