次のように、エクストラから pojo を取得するアクティビティがあります。
@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!"));
}
これらのテストを実行すると、null ポインターが返され続けます。アクティビティのgetIntent().getExtras()
行で、インテントを使用してアクティビティをモックするプロセスが正しくないと想定しています。
誰でも助けてもらえますか?
ありがとう