3

我正在尝试使用Robolectric为使用SherlockActionBar的应用程序编写测试。如果选择了 an ,我需要测试应用程序是否正确MenuItem,但是 Robolectric 库仅android.view.MenuItem在应用程序使用方法时提供模拟onOptionItemSelected(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()));

顺便说一句,感谢Eugen Martynov试图理解我的问题:)

于 2012-10-26T15:39:12.897 回答