2016-06-08 26 views
5

Etkinliğim iki Fragman barındırıyor. OnCreate() 'da hangi parçanın gösterileceğini belirledim.Test Aktivitesi ve espresso ile özel fragman

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    handleIntent(getIntent()); 
} 


private void handleIntent(Intent intent) { 
    LogUtils.d(TAG, "handleIntent action=" + intent.getAction()); 
    if (MainIntentService.ACTION_TARGET_OPENER.equals(intent.getAction())) { 
     loadOpener(); 
    } else if (MainIntentService.ACTION_TARGET_LOGIN.equals(intent.getAction())) { 
     loadLogin(); 
    } else { 
     //noop 
    } 
} 

private void loadOpener() { 
    OpenerFragment openerFragment = OpenerFragment.newInstance(); 
    loadFragment(R.id.frame_fragment_container, openerFragment, true); 
} 

loadFragment() Bu benim test Sınıfı olan

işlem ve İşleyen, parçanın dikkat çekmek ...: anlarım nasıl

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class LoginScreenTest { 


@Rule 
public ActivityTestRule<LoginActivity> mNotesActivityTestRule = 
     new ActivityTestRule<>(LoginActivity.class); 


@Test 
public void clickAddNoteButton_opensAddNoteUi() throws Exception { 
    onView(withId(R.id.button_login_submit)).perform(click()); 
    onView(withId(R.id.text_login)).check(matches(isDisplayed())); 
} 

}

test sınıfında hangi fragman gösterilmelidir?

cevap

8

otomatik aktiviteyi başlatmak değil Kuralınızı somutlaştırın:

@Rule 
    public ActivityTestRule<LoginActivity> mNotesActivityTestRule = 
     new ActivityTestRule<>(LoginActivity.class, false, false); 

Ardından el aktiviteyi başlatmak ve ilgilendiğiniz bir niyet geçmek:

Intent intent = new Intent(); 
intent.setAction(MainIntentService.ACTION_TARGET_OPENER); 
mNotesActivityTestRule.launchActivity(intent);