我有一个工作正常的应用程序。但是我决定开始为它进行测试。 但现在我遇到了一些问题:
我的应用程序使用嵌套的Fragments
来使用不同的堆栈。我想测试嵌套在另一个Fragment
“FragmentOuterInfo”中的特定Fragment
“FragmentInfo”。
我的测试运行正常,直到我想调用“FragmentOuterInfo”的ChildFragmentManager
。我收到这个错误:
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);
}
}
其他信息:
如果您需要完整的Stacktrace - &gt;告诉我。 谢谢!