2

robotiumでリストビューをテストするにはどうすればよいですか?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"));
}

それはロボットを介して可能ですか?

よろしくお願いします

4

1 に答える 1

1

これは、モック フレームワークの明確なケースです。jMockit は最も高度で、スタブ化された Android ライブラリに対して使用するのに適しているため、お勧めします。Android 自体によって提供されるクラスをテストするのは好きではないため (それらが正しいことを行うことを暗黙のうちに信頼します)、次のことだけをテストする必要があります。

  • あなたのリポジトリは値リストを要求されました
  • この値リストはアダプタの作成に使用されました
  • このアダプタはリスト ビューに渡されました

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

@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);

}

(モック化を容易にするためにインターフェイスを調整したことに注意してください)

于 2011-11-25T11:16:58.273 に答える