我目前正在尝试使用 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 时,Robolectric TestRunner 总是返回 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");
}
}