現在、Robolectricを使用してAndroidコードをテストしようとしていますが、ListViewに問題があります。子ビューにアクセスしようとすると、リストが空であるため、ListViewは常にnullを返します。
アプリケーションの実装は次のようになり、単純なリストビューが作成されます。
private ListView listView;
private ArrayAdapter<String> adapter;
private static String values[] =
new String[] {"Android", "Apple", "Windows" };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_overview);
initialize();
}
private void initialize() {
listView = (ListView) findViewById(R.id.tweet_list);
adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
values);
listView.setAdapter(adapter);
}
ただし、次のようにListViewにアクセスしようとすると。getChildAt()を介してArrayAdapterにアクセスしている場合、RobolectricTestRunnerは常にnullを返します。
private OverviewActivity activity;
private ListView listView;
@Before
public void setUp() throws Exception {
activity = new OverviewActivity();
activity.onCreate(null);
listView = (ListView) activity.findViewById(R.id.tweet_list);
}
@Test
public void shouldFindListView() throws Exception {
if (listView.getChildCount() > 0) {
assertThat(
"Android",
equalTo(listView.getChildAt(0).toString()));
} else {
fail("no child views are avaliable");
}
}