2017-09-13 5 views
1

Nouveauté d'Android Test d'unité avec Espresso, sous @Rule, quel est l'objectif de la création d'une variable membre? Est-ce que le nom de la variable est important? Je me rends compte que j'ai besoin de dire à l'unité de test quelle activité (ou service, classe) je suis en train de tester, mais est-ce que la variable et sa portée sont utilisées partout où je dois m'occuper?Quel est le but de @Rule dans Android Espresso UI Test?

@Rule 
    public ActivityTestRule<MenuActivity> mActivityTestRule = new ActivityTestRule<>(MenuActivity.class); 

Répondre

1

Après avoir fait un peu plus pratique et reserach avec des tests avec l'interface utilisateur Android Espresso, a obtenu un grand nombre de cas d'utilisation pour les variables @Rule. De qui est avec les ressources de test Idling (Voir et les données qui se produiraient async). À l'aide de l'objet ActivityTestRule (ex: mActivityTestRule), je peux référencer des ressources, déclencher des méthodes publiques avec la balise @VisibleForTesting dans cette classe.

ex.

// In the activity 
    @VisibleForTesting 
    @NonNull 
    public SimpleIdlingResource getmSimpleIdlingResource() 
    { 
     if (mSimpleIdlingResource == null) 
     { 
      mSimpleIdlingResource = new SimpleIdlingResource(); 
     } 
     return mSimpleIdlingResource; 
    } 

// In the Test class 
    // the test is run. 
    @Before 
    public void registerIdlingResource() { 
     mIdlingResource = mActivityTestRule.getActivity().getmSimpleIdlingResource(); 
    }