3

SherlockActionBarを使用するアプリのRobolectricを使用してテストを作成しようとしています。が選択されている場合、アプリケーションが正しいことを行うかどうかをテストする必要がありますが、Robolectric libは、アプリがメソッドを使用している間、モックのみを提供します。MenuItemandroid.view.MenuItemonOptionItemSelected(com.actiombarsherlock.view.MenuItem)

だから私の質問は:

  • をあざける可能性があるかもしれcom.actionbarsherlock.view.MenuItemませんか?

  • または回避策か何か?

前もって感謝します...

4

1 に答える 1

5

だから...私がこれをしたことをあざけるためのこれ以上のエレガントなcom.actionbarsherlock.view.MenuItem方法はありません:

  • を実装する独自のクラスを作成しましたcom.actionbarsherlock.view.MenuItem
  • モッククラスにitemIdのintフィールドを追加しました。
  • インターフェイスの他のメソッドMenuItemは空白のままです(他のテストで使用する可能性があります)

その結果、私はこの種のテストを受けました:

com.actionbarsherlock.view.MenuItem item = new TestSherlockMenuItem(R.id.some_action);

activity.onOptionsItemSelected(item);

ShadowActivity shadowActivity = Robolectric.shadowOf(activity);
Intent startedIntent = shadowActivity.getNextStartedActivity();
assertNotNull(startedIntent);

ShadowIntent shadowIntent = Robolectric.shadowOf(startedIntent);
assertThat(shadowIntent.getComponent().getClassName(),
                equalTo(NextActivity.class.getName()));

ちなみに、私の問題を理解しようとしてくれたEugenMartynovに感謝します:)

于 2012-10-26T15:39:12.897 に答える