新版的的 app 使用了 FramgentActivity

robotium 测试代码 执行 tearDown() 时,报错:
Test run failed: Instrumentation run failed due to 'android.support.v4.app.SuperNotCalledException'

07-22 14:27:04.256: E/AndroidRuntime(22760): FATAL EXCEPTION: main
07-22 14:27:04.256: E/AndroidRuntime(22760): Process: com.abc.xyz, PID: 22760
07-22 14:27:04.256: E/AndroidRuntime(22760): java.lang.RuntimeException: Unable to destroy activity
{com.abc.xyz/com.abc.xyz.ui.main.HomeActivity}:
android.support.v4.app.SuperNotCalledException:
Fragment UserCenterFragment{41f50ba8 #2 id=0x7f0f00fe 2131690503} did not call through to super.onDestroy()

原来的 tearDown()

public void tearDown() throws Exception {
    solo.finishOpenedActivities();
}

我修改了一下 tearDown:

@Override
public void tearDown() throws Exception {
    // solo.finishOpenedActivities();
    while (solo.getCurrentActivity().getLocalClassName()
            .equals("ui.main.HomeActivity") == false) {
        solo.goBack();
    }
    solo.getCurrentActivity().finish();
}

一个 testcase 没问题 ; 2 个 testcase 的话 第二个还是报
Test run failed: Instrumentation run failed due to 'android.support.v4.app.SuperNotCalledException'

PS: onDestroy 已经添加 super.onDestroy();

@Override
protected void onDestroy() {
super.onDestroy();
doReallyStop(false);

mFragments.dispatchDestroy();
if (mLoaderManager != null) {
mLoaderManager.doDestroy();
}
}


↙↙↙阅读原文可查看相关链接,并与作者交流