【问题标题】:Android: How to perform unit test for android fragmentAndroid:如何对 android 片段执行单元测试
【发布时间】:2014-05-14 18:49:10
【问题描述】:

我有一个带有可滑动视图的 Android 选项卡布局。

文件结构如下:

  • 有一个活动类:TabMainActivity.java
  • 在这个activity下,有一个fragment类:bookLockerFragment.java

这个片段类链接到一个包含各种按钮的 XML 文件。

public class bookLockerFragment extends Fragment {
    Button btnSis;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_booklocker, container, false);
        btnSis = (Button) rootView.findViewById(R.id.btnSis);
     }
 .......
 }

我已阅读 vogella 活动测试教程,但有关片段单元测试的信息很少。

我试图写一些代码,但卡在这一行:

transaction.add(R.layout.fragment_booklocker, fragment, "tag");

我收到以下错误:

FragmentTransaction 类型中的方法 add(int, Fragment, String) 不适用于参数 (int, booklockertest, String)

代码:

public class booklockertest extends
ActivityInstrumentationTestCase2 < TabMainActivity > {

    private TabMainActivity mActivity;

    Fragment fragment;
    FragmentManager mFragmentManager;

    public booklockertest() {
        super(TabMainActivity.class);
        // TODO Auto-generated constructor stub
    }

    protected void setUp() throws Exception {
        super.setUp();
        mActivity = getActivity();
    }

    private Fragment startFragment(booklockertest fragment) {
        FragmentTransaction transaction =

        mActivity.getSupportFragmentManager().beginTransaction();
        transaction.add(R.layout.fragment_booklocker, fragment, "tag");
        transaction.commit();
        getInstrumentation().waitForIdleSync();
        Fragment frag =

        mActivity.getSupportFragmentManager().findFragmentByTag("tag");
        return frag;
    }

    public void testFragment() {
        booklockertest fragment = new booklockertest() {
            //Override methods and add assertations here.
        };

        Fragment frag = startFragment(fragment);
    }
}

【问题讨论】:

    标签: android


    【解决方案1】:

    偶然发现这一点,您可能已经想通了,但是

    private Fragment startFragment(booklockertest fragment) { ... }
    ...
    public void testFragment() {
        booklockertest fragment = new booklockertest() {
            //Override methods and add assertations here.
        };
    
        Fragment frag = startFragment(fragment);
    }
    

    应该是

    private Fragment startFragment(bookLockerFragment fragment) { ... }
    ...
    public void testFragment() {
        bookLockerFragment fragment = new bookLockerFragment() {
            //Override methods and add assertations here.
        };
    
        Fragment frag = startFragment(fragment);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-01-29
      • 2020-09-25
      • 2022-11-17
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多