リストビューを含むいくつかのアクティビティを持つアプリケーションがあります。最初のリストビューからの選択によって2番目のリストビューの内容が決まり、2番目のリストビューによって3番目のリストビューの内容が決まります。
3番目のリストビューをテストしたいのですが、インテントが必要なため、リストは何も返しません。これを修正するために、テストにインテントを手動で追加できます。これは、テストが機能することを意味します。
public InspectionListActivityTest() {
super(InspectionListActivity.class);
Intent i = new Intent();
i.putExtra("guid", "abcbbf2b-5e14-4cb1-af1b-e3084b45d4cf");
setActivityIntent(i);
}
コードからわかるように、GUIDを使用して、回避したいリストを決定します。テスト中にデータベースを頻繁にクリアするため、このフィールドを常に変更する必要があります。
理想的には、ContentResolverを使用して、別のテーブルから最初のGUIDを取得します。これは、テストで常に情報を取得できることを意味します。
public InspectionListActivityTest() {
super(InspectionListActivity.class);
ContentResolver cr = getActivity().getContentResolver();
Cursor cursor = cr.query(Locations.CONTENT_URI, null, null, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
String guid = cursor.getString(cursor.getColumnIndex(Locations.GUID));
Intent i = new Intent();
i.putExtra(IntentFilters.LOCATION.getIntent(), guid);
setActivityIntent(i);
}
}
}
ただし、getActivity()メソッドでnullpointerexceptionが発生し、このsetActivityIntentを他の場所に配置できないようです。