其他分享
首页 > 其他分享> > android – Robolectric – 如何模拟com.actionbarsherlock.view.MenuItem?

android – Robolectric – 如何模拟com.actionbarsherlock.view.MenuItem?

作者:互联网

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

所以我的问题是:

>可能有一个可用性来模拟com.actionbarsherlock.view.MenuItem?
>或解决方法或什么?

提前致谢…

解决方法:

所以…因为没有更优雅的方式来模拟com.actionbarsherlock.view.MenuItem我这样做了:

>制作我自己的实现com.actionbarsherlock.view.MenuItem的类
>在我的mock类中为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试图理解我的问题:)

标签:android,mocking,robolectric,actionbarsherlock
来源: https://codeday.me/bug/20190901/1784729.html