Robolectric - 如何模拟com.actionbarsherlock.view.MenuItem?

时间:2012-10-26 10:02:58

标签: android mocking actionbarsherlock robolectric

我正在尝试使用 Rolocklectric 为使用 SherlockActionBar 的应用程序编写测试。 如果选择了MenuItem,我需要测试应用程序是否正确,但是当应用程序使用方法android.view.MenuItem时,Robolectric lib仅为onOptionItemSelected(com.actiombarsherlock.view.MenuItem)提供模拟。

所以我的问题是:

  • 可能存在可模仿com.actionbarsherlock.view.MenuItem的可用性?

  • 或解决方法或什么?

提前致谢...

1 个答案:

答案 0 :(得分: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 试图了解我的问题:)