2015-11-30 1 views
5

dans Android Studio, dans le dossier androidTest, j'ai ce cas de test:Pourquoi Espresso quitte-t-il l'application après la fin du test? Comment arrêter de le faire

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

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

    @Test 
    public void teamsListIsSortedAlphabetically() { 
     onView(withId(R.id.etEmail)).perform(click(), replaceText("[email protected]") 
     ); 
     onView(withId(R.id.etPassword)).perform(click(), replaceText("asdasd") 
     ); 
     onView(withId(R.id.bLoginSubmit)).perform(click()); 
    } 
} 

L'application lance LoginActivity, se connecte, l'activité suivante est affichée pendant 1-2 secondes et puis il quitte l'activité en me laissant sur l'écran du lanceur. Comment faire en sorte qu'Espresso reste sur cet écran?

+0

Copie possible de [laisser l'application Android à l'état final lors de la fin du test de l'expresso] (http://stackoverflow.com/questions/29950640/leave-android-app-in-final-state-on-espresso-test-completion –

+0

Vous pourriez vouloir vérifier cette question: http://stackoverflow.com/questions/42299276/android-directly-launch-the-activity-fragment-that-is-under-development –

Répondre

8

Désolé, mais c'est impossible. Il semble que vous ne connaissiez pas assez les tests automatisés.

S'il vous plaît lire cette référence Google: Automating User Interface Tests

Espresso, Robotium, Calabash et d'autres cadres de test de l'interface utilisateur ont été faites pour des événements de test d'interaction courte. Il simule le comportement spécifique d'un utilisateur - lancez l'application, faites quelques tours et (si vous réussissez) que fermez une application.

Bien sûr, Espresso vous permet de créer des ressources de ralenti personnalisées et de l'enregistrer dans l'application.

La méthode la plus simple pour mettre en veille un test pendant une durée spécifique est la méthode d'utilisation Thread.sleep(time_in_miliseconds), mais comme je l'ai dit, cela va à l'encontre de l'idée d'un test automatisé.