【问题标题】:Testdroid/Robotium waitForFragment using ViewPager使用 ViewPager 的 Testdroid/Robotium waitForFragment
【发布时间】:2013-02-22 05:23:45
【问题描述】:

我正在尝试使用由 Robotium 支持的 Testdroid。

背景: FragmentStatePagerAdapter 不为片段分配标签值(与FragmentPagerAdapter 不同)所以waitForFragmentByTag 将不起作用;结果我使用了waitForFragmentById,但我无法按预期工作。

我的片段在定义 UI 结构和布局的 xml (fragment.xml) 中定义。 我的片段也在代码中定义(Fragment.java),这是注册监听器等的地方。

我已经通过ExtSolo源代码进行了调试,当Waiter调用fragmentManager时(两个)都返回空值,用于XML中父元素的@id标签中定义的ID(R.id.fragment ) 以及文件本身定义的 ID (R.layout.fragment)。

这些是要使用的正确 ID 值吗?如果不是,那是什么?非常感谢任何帮助。

【问题讨论】:

    标签: android android-fragments robotium testdroid


    【解决方案1】:

    Robotium 基于 FragmentManager 和方法 findFragmentById/findFragemntByTag。 使用示例应用程序 Support4Demos,我检查了 State Pager 中的片段,这似乎与您的上下文相似。使用此代码:

    List<Fragment> fragList = new ArrayList<Fragment>();
    
    @Override
    public void onAttachFragment (Fragment fragment) {
        if (!fragList.contains(fragment)) {
            fragList.add(fragment);
            Log.d("TEST", "Fragment id ("+ fragment.getId() +")");
            if (fragment.getId() != View.NO_ID && fragment.getId() != 0) {
                String id = fragment.getResources().getResourceEntryName(
                        fragment.getId());
                Log.d("TEST", "Fragment id " + id);
            }
        }
    }
    

    你可以检查你的片段有什么 id。不幸的是,它们都有 ViewPager 的 id 或 id = 0,因此似乎无法通过 id 来区分它们。不知道会不会对你有帮助,但我希望如此。

    【讨论】:

      【解决方案2】:

      我最终使用了一个令人讨厌的解决方法,如果结构发生变化会导致测试失败:

      private void assertAtHomeFragment() {
          assertTrue(solo.waitForView(ListView.class, 1, 2000));
          assertTrue(solo.waitForView(ImageButton.class, 3, 2000));
          assertTrue(solo.waitForView(Button.class, 1, 2000));
          solo.sleep(1000);
      }
      
      private void assertAtLibraryFragment() {
          assertTrue(solo.waitForView(ListView.class, 1, 2000));
          assertTrue(solo.waitForView(ImageButton.class, 0, 2000));
          solo.sleep(1000);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-30
        • 1970-01-01
        • 2015-08-08
        • 2011-09-19
        • 2012-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多