I have implemented a ListView that launches a new Activity when a list item is clicked. When I test it manually, it works fine. But when I try to run an automatic test using ActivityUnitTestCase , I get a NullPointerException as if the ListView was empty.
MainActivity (partial):
public class MainActivity extends ListActivity { @Override protected void onResume() { super.onResume(); String[] items = new String[] {"item 1", "item 2"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); setListAdapter(adapter); getListView().setOnItemClickListener(new OnItemClickListener () { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView clickedItem = (TextView) view; CharSequence clickedItemText = clickedItem.getText();
Test code failed:
public class MainActivityTest extends ActivityUnitTestCase<MainActivity> { ListView listView; View child0; public MainActivityTest() { super(MainActivity.class); } private void setUpTest() { MainActivity activity = startActivity(new Intent(), null, null); getInstrumentation().callActivityOnStart(activity); getInstrumentation().callActivityOnResume(activity); listView = (ListView) activity.findViewById(android.R.id.list); child0 = listView.getChildAt(0);
Both test methods do not work, because listView.getChildAt(0) returns null . Why is the ListView empty? How can I get him to update himself with the right children?
android android-activity android-listview unit-testing android-testing
lacton Aug 31 '13 at 10:23 2013-08-31 10:23
source share