所以......因为没有更优雅的方式来模拟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试图理解我的问题:)