替换后使用Fragment进行UI测试

时间:2012-11-05 13:56:42

标签: android testing fragment

我有一个包含多个片段的应用程序,这些片段由一个Activity管理。我的问题是我想测试应用程序并测试每个片段的UI。我可以测试第一个Fragment并得到所有这些视图,但是当我点击一个Button或其他东西时(用另一个片段替换Fragment)我无法获得任何新片段的视图,但是我的MainActivity说current Fragment是新的片段。

@UiThreadTest
public void testNewFragmentScrollView() {
    assertTrue(mActivity.getFragmentType().equals(FragmentTypes.FRAGMENT_STARTSCREEN));
    ivNewFragment.performClick(); // replace fragment
    sleep();
    assertTrue(mActivity.getFragmentType().equals(FragmentTypes.FRAGMENT_NEW));
    //get something from new fragment, ID is copied from xml file and not false
    ScrollView scrollView = (ScrollView) mActivity.findViewById(R.id.sv_fragment_new_scrollable);    
    assertTrue(scrollView != null); //#false???
    mActivity.finish();
}

我是否必须在我的Testclass中更新某些内容,或者为什么我没有从新片段中获取任何视图?

1 个答案:

答案 0 :(得分:2)

好的,我通过拆分代码解决了我的问题。当我在setUp中更改片段并等待几毫秒时,我可以在每个测试方法中从新片段中获取所有视图

@Override
protected void setUp() throws Exception {
    super.setUp();
    setActivityInitialTouchMode(false);
    mActivity = getActivity();
    buNewFragment =(Button) mActivity.findViewById(R.id.bu_actionbar_newfragment);
    mActivity.runOnUiThread(new Runnable() {
        public void run() {
            buNewFragment .performClick();
        }
    });
    sleep(500);//simple Thread.sleep() method
}

@UiThreadTest
public void testNewFragmentScrollView() {
    assertTrue(mActivity.getFragmentType().equals(FragmentTypes.FRAGMENT_NEW));
    ScrollView scrollView = (ScrollView) mActivity.findViewById(R.id.sv_fragment_new_scrollable);
    assertTrue(scrollView != null); //#t
}