当活动结束时,Robotium waitForFragmentByTag被忽略

时间:2014-03-11 19:57:34

标签: android automated-tests robotium android-gradle

我正在编写Robotium测试以捕获现有的错误,其中操作栏主页按钮退出应用程序而不是弹出当前片段。不幸的是,当我期待它失败时,我的测试正在通过。

我希望下面测试中的最后waitForFragmentByTag行能够检测到活动已完成而不是显示特定片段。

我确信clickOnActionBarHomeButton正在完成活动,而不是弹出片段。

public void testBackToLandingPage() {
    Activity activity = getActivity();
    Intent intent = new Intent(activity, activity.getClass());
    activity.startActivity(intent);
    assertTrue(solo.waitForFragmentByTag("landingfragment"));

    solo.clickOnButton("Create Account");
    assertTrue(solo.waitForFragmentByTag("createaccountfragment"));

    // Check the hardware back button takes you back to the landing page
    solo.goBack();
    assertTrue(solo.waitForFragmentByTag("landingfragment"));

    solo.clickOnButton("Create Account");
    assertTrue(solo.waitForFragmentByTag("createaccountfragment"));

    // Check the action bar back/up button takes you back to the landing page
    solo.clickOnActionBarHomeButton();
    assertTrue(solo.waitForFragmentByTag("landingfragment"));
}

我到目前为止找到的最佳选择是在clickOnActionBarHomeButton之后添加此检查:

assertFalse(solo.getCurrentActivity().isFinishing());

似乎我可能需要一个自定义的waitForFragmentByTag方法,它总是执行两个断言,否则我可能会错过我的活动意外结束的情况。

Robotium是否已经有方法来涵盖这种情况?我重新发明了轮子吗?

我正在使用Robotium 5.0.1并在OS 4.4.2模拟器上进行测试。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。看起来这是一个在robotium 5.2.1中修复的错误,但我找不到任何相关的文档。我找到了一个相关的错误(https://code.google.com/p/robotium/issues/detail?id=589)虽然在5.2.1中修复了。