2011-11-10 5 views
1

Robotiumを使用してアプリケーション機能をテストしようとしています。機能の1つは、最初のアクティビティがアクティビティスタックの上のビューから起動されるとき、スタックの先頭をクリアして既存のアクティビティi.g.( "MainActivity")を再利用する必要があるということです。Android Instrumentation現在のアクティビティがホーム(ランチャー)画面であるかどうかを確認する方法をテストしますか?

フロー:

FirstScreen - > LoginActivityScreen - > RegistrationScreen - > FirstScreen

ソリューションは十分に簡単です:Intent.FLAG_ACTIVITY_CLEAR_TOPは背中にFirstScreenを置くフラグを設定することにより

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

私のアプリケーションスタックの最上位です。

私が記述しようとしていますテストは、ハードウェアの戻るボタンが、その後押されたときにアプリがなくなっているとネイティブホーム(ランチャー)アプリケーションが現在の活動であることを確認することです。

マイ計装のTestCase:

@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()); 
    } 

私はランチャーアプリのアクティビティが現在の活動であることを主張することを好みます。どんなアイデアや提案も大歓迎です。

答えて

0

私は、この使用してActivityUnitTestCaseではなく、InstrumentationTestCase2を解決することができたしています。私は、フラグを追加することでアンドロイドOSが私の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()); 
    } 
関連する問題