@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
MyPojo pojo = extras.getParcelable("pojo");
// do stuff with my pojo here
}
}
// button that shows a toast message
}
我很难用Robolectric进行测试,我相信我需要使用ShadowIntents和ShadowActivities的组合,但是文档有点薄,而且关于这个特定场景的任何有用的教程都相当稀疏.
这是我到目前为止所提出的:
@Test
public void assertClickingTagSightingdisplaysToast()
{
myActivity = new MyActivity();
myActivity.onCreate(null);
ShadowActivity shadowMyActivity = shadowOf(myActivity);
shadowMyActivity.setIntent(new Intent().putExtra("pojo", generateAPojo()));
ShadowButton shadowButton = (ShadowButton) shadowOf(shadowMyActivity.findViewById(R.id.myButton));
shadowButton.performClick();
assertthat(ShadowToast.getTextOfLatestToast(), equalTo("Button was clicked!"));
}
当我执行这些测试时,在我的活动的getIntent().getExtras()行中,我一直得到一个空指针,我假设我用意图模拟活动的过程是不正确的.
有人可以帮忙吗?
谢谢
解决方法:
我自己就是这样做的.在调用onCreate()之前,您似乎需要使用shadowActivity来操作Intent.
Robolectric.shadowOf(activity).setIntent(intent);
似乎操纵活动本身应该做的伎俩,但事实并非如此.比我聪明的人必须解释为什么这是 – 或者只是比我更聪明的人告诉你上面的错误.
– 快速记录.由于Robolectric似乎使用javassist来操纵分类的阴影,因此在第一次加载类之前进行类绑定非常重要.我按照他们的建议在Runner中进行绑定.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。