3

我有一个运行良好的应用程序。但是我决定开始为它实施测试。但是现在我遇到了一些问题:

我的应用程序使用嵌套Fragments来使用不同的堆栈。我想测试Fragment嵌套在另一个Fragment“FragmentOuterInfo”中的特定“FragmentInfo”。我的测试运行良好,直到我想调用ChildFragmentManager“FragmentOuterInfo”。我收到此错误:

FATAL EXCEPTION: main
java.lang.IllegalStateException: No activity
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075)...

我知道有一个名为robolectric的框架,但首先我想知道问题是什么以及是否可以使用ChildFragmentManager. 也许有人知道测试嵌套的好方法Fragments。我很感激任何提示。

我的代码:

public class FragmentInfoTest extends ActivityInstrumentationTestCase2<MainActivity> {

    // KONSTANTE
    private static final String PKG = "com.example";
    private static final int MENU_INFO = com.example.R.id.info;

    // MEMBER
    private MainActivity mActivity;
    private FragmentInfo mFragInfo;


    // KONSTRUKTOR
    public FragmentInfoTest() {
        super(PKG, MainActivity.class); // calls Superclass with pkg & class under test
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void setUp() throws Exception{
        super.setUp();
        // turn TouchMode off
        setActivityInitialTouchMode(false);

        // get MainActivity
        mActivity = getActivity();

        // click on MenuItem "INFO" 
            // -> I also see the FragmentInfo for a short time
        // so it has been init!
        getInstrumentation().invokeMenuActionSync(mActivity, MENU_INFO, 0);

    }

    public void testPreConditions(){
        // get outer Fragment
        FragmentOuterInfo infoOuter = mActivity.getFragmentOuterInfo();
        assertNotNull(infoOuter); // this check is fine


        // Here I get the error:
        FragmentManager manager = infoOuter.getChildFragmentManager();
        assertNotNull(manager);

    }
}

附加信息:

  • IDE:Android Studio 0.2.10
  • 我是单元测试的新手:)

如果您需要完整的 Stacktrace -> 告诉我。谢谢!

4

0 回答 0