一直在寻找一段时间但找不到答案。假设我使用onCreate方法进行此活动,如下所示:
private ListView mListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_view);
mListView = (ListView) findViewById(R.id.list_view);
}
我有一个扩展ActivityInstrumentationTestCase2的测试类。一旦我在测试中的活动上调用onCreate(null),我如何测试setContentView是否被调用并设置为正确的资源?
private someActivity mActivity;
protected void setUp() throws Exception {
super.setUp();
mActivity = getActivity();
}
public void testOnCreate() {
assertNull(mActivity.findViewById(R.id.list_view));
}
答案 0 :(得分:1)
以下代码应使用setContentView()
返回视图集:
View getContentView() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.getChildAt(0);
}
修改强>
或者,如果布局中的顶级视图设置了其ID,则可以检查测试代码中findViewById(rootId)
是否返回非空。
答案 1 :(得分:1)
我们采用略有不同的方法,我们习惯在布局的根元素中添加一个id,并在robolectric单元测试中断言如下
例如,考虑下面的布局xml(注意id android:id =“@ + id / test_layout_root”):
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_layout_root"
android:layout_height="match_parent"
android:layout_width="wrap_content"
...
...
</TableLayout>
robolectric单元测试代码:
assertEquals(R.id.test_layout_root, shadowOf(testActivity).getContentView().getId());
您可以在我的博客上获取更多详情<{3}}