2016-10-14 8 views
-1

Robolectricを使ってAndroidアプリケーションのメニューにテストを書く必要があります。Androidでメニューをテストするには?

メニューの

ソースコード:

public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     tokenProvider.destroyToken(this); 
     tokenProvider.destroyEmail(this); 
     Intent nextActivity = new intent(getApplicationContext(),MainActivity.class); 
     startActivity(nextActivity); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

をあなたがRoboMenuItemMenuItemを作成し、活動のonOptionsItemSelected()にそのメニューアイテムを渡すことでrobolectricを使用してメニューをテストできるテスト

+0

あなたは文脈を十分に提供することなく広すぎる質問を求めています。 Robolectricインフラストラクチャーはありますか?コンポーネント名は何ですか?既に何かを試してみましたか?エラーメッセージがありますか?これを最初にお読みくださいhttps://stackoverflow.com/help/asking – Ivan

答えて

1

を書くために助けてください。

@RunWith(RobolectricGradleTestRunner.class) 
@Config(constants = BuildConfig.class , sdk = 21) 
public class AboutTheAppFragmentTest { 

private Context context; 
private YourActivity activity; 
private ActivityController<YourActivity> controller; 

@Before 
public void setUp() { 
    context = RuntimeEnvironment.application.getApplicationContext(); 
    controller = Robolectric.buildActivity(YourActivity.class); 

    activity = controller 
      .create() 
      .start() 
      .resume() 
      .visible() 
      .get(); 
} 

@Test 
public void testMenuOptionsSelected(){ 
    MenuItem menuItem = new RoboMenuItem(R.id.your_menu_id); 
    activity.onOptionsItemSelected(menuItem); 
    //write your test assertion 
} 

@After 
public void tearDown() { 
    controller.pause().stop().destroy(); 
    controller = null; 
    context = null; 
} 

}

関連する問題