1

我正在尝试使用 Robotium 测试应用程序功能。其中一个功能是,当我的初始活动从活动堆栈顶部的视图启动时,它应该清除堆栈顶部并重用现有的活动 ig("MainActivity")。

流动:

FirstScreen -> LoginActivityScreen -> RegistrationScreen -> FirstScreen

解决方案很简单:

   Intent intent = new Intent(getBaseContext(), FirstScreen.class);
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   startActivity(intent);

通过设置标志Intent.FLAG_ACTIVITY_CLEAR_TOP将 FirstScreen 放回我的应用程序堆栈的顶部。

我正在尝试编写的测试是确认当按下硬件后退按钮时应用程序消失并且本机主页(启动器)应用程序是当前活动。

我的仪器测试用例:

    @Smoke
    public void testshouldBeOnLauncherHomeScreen() {
        // Monitor the Home (Launcher) Activity being Launched
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.intent.action.MAIN");
        filter.addCategory("android.intent.category.HOME");
        ActivityMonitor monitor = getInstrumentation().addMonitor(filter, null, false);

        // go back to the launcher home
        robotium.goBack();

        assertEquals(1, monitor.getHits());
    }

我更愿意断言 Launcher 应用程序的活动是当前活动。任何想法或建议将不胜感激。

4

1 回答 1

0

我已经能够使用ActivityUnitTestCase而不是InstrumentationTestCase2来解决这个问题。我相信 android 操作系统通过添加标志将我的 FirstScreen 带到顶部。在发出启动我的第一个屏幕的意图时验证标志已设置,足以让我确信我的代码正在执行我期望的操作。

    Public void testThatStartedIntentHasClearTopFlag() {
        Activity activity startActivity(new Intent(), null, null);
        activity.findViewById(R.id.button).performClick();
        Intent intent = getStartedActivityIntent();
        assertEquals(Intent.FLAG_ACTIVITY_CLEAR_TOP, intent.getFlags());
    }
于 2012-01-17T01:27:03.420 回答