我有一个运行良好的应用程序。但是我决定开始为它实施测试。但是现在我遇到了一些问题:
我的应用程序使用嵌套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 -> 告诉我。谢谢!