Espresso comment tester si l'activité est terminée?

Je souhaite affirmer que mon Acitivty que je teste actuellement est terminé lorsque certaines actions sont effectuées. Malheureusement jusqu'à présent, je ne peux l'affirmer qu'en ajoutant du sommeil à la fin du test. Y a-t-il une meilleure façon?

import android.content.Context; import android.os.Build; import android.support.test.rule.ActivityTestRule; import android.test.suitebuilder.annotation.LargeTest; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.junit.Assert.assertTrue; @SuppressWarnings("unchecked") @RunWith(JUnit4.class) @LargeTest public class MyActivityTest { Context context; @Rule public ActivityTestRule<MyActivity> activityRule = new ActivityTestRule(MyActivity.class, true, false); @Before public void setup() { super.setup(); // ... } @Test public void finishAfterSomethingIsPerformed() throws Exception { activityRule.launchActivity(MyActivity.createIntent(context)); doSomeTesting(); activityRule.getActivity().runOnUiThread(new Runnable() { @Override public void run() { fireEventThatResultsInTheActivityToFinishItself(); } }); Thread.sleep(2000); // this is needed :( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { assertTrue(activityRule.getActivity().isDestroyed()); } } } 

  • 'La page Web n'est pas disponible' avec WebView.loadData () SEULEMENT dans l'émulateur
  • Est-il possible de spécifier plusieurs valeurs de gravité dans l'élément spinner custom_style.xml?
  • Comment puis-je passer plusieurs arguments via xml pour un créateur personnalisé lors de l'utilisation de la liaison de données Android
  • Comment rendre le résultat «de manière naturelle» lorsque l'activité appelée est appelée?
  • Comment éviter une erreur de mémoire morte lors de l'utilisation de bitmaps dans Android
  • Emulateurs Genymotion donnant une erreur Open GL sur Kubuntu 13.10 64 bits
  • Obtenir la hauteur d'une TextView
  • Comment utiliser Broadcom BLE SDK (SMART 4.0) dans Android 4.X
  • Le projet Android / Scala dans IntelliJ 14 compile, mais se bloque lorsqu'il est lancé pour ne pas trouver Scala
  • Android BLE Gatt Caractéristique WRITE_TYPE_NO_RESPONSE ne fonctionne pas
  • Les préférences étant activées en fonction d'autres préférences
  • Comment mettre un marqueur stable (cercle solide sur l'image). Quelle sera la même position sur la prochaine image de caméra?
  • 3 Solutions collect form web for “Espresso comment tester si l'activité est terminée?”

    Dans mon cas, je peux tester isFinishing() :

    assertTrue(activityTestRule.getActivity().isFinishing());

    au lieu de:

      Thread.sleep(2000); // this is needed :( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { assertTrue(activityRule.getActivity().isDestroyed()); } 

    Un autre avantage de isFinishing() est que vous n'avez pas besoin de la vérification de la version.

    Vous pouvez utiliser l'exemple StartActivityForResult ci-dessous, plus de descriptions dans les liens.

    Comment démarrer l'activité de FirstActivity:

     Intent i = new Intent(this, SecondActivity.class); startActivityForResult(i, 1); 

    Voilà comment terminer votre SecondActivity pour revenir au premier (sans résultat d'envoi):

     Intent returnIntent = new Intent(); setResult(Activity.RESULT_CANCELED, returnIntent); finish(); 

    Comment augmenter l'événement lorsque SecondActivity est terminé (est écrit dans FirstActivity):

     @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { } }//onActivityResult 

    Plus vous pouvez trouver ici: http://developer.android.com/training/basics/intents/result.html et comment gérer `startActivityForResult` sur Android? Il existe également la façon dont vous pouvez envoyer les données que vous souhaitez obtenir de SecondActivity.

    Je ne sais pas si c'est une bonne pratique mais cela a fonctionné pour moi:

     assertTrue(mTestRule.getActivity() == null); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.