2017-05-19 2 views
3

Je souhaite écrire des scripts espresso pour tester les liens profonds et je n'ai aucune idée de la procédure à suivre. Vous cherchez des solutions qui m'aideront à avoir plus d'idée, éventuellement une procédure étape par étape sur la façon de commencer.Automatisation des liens profonds à l'aide d'espresso android

Par exemple: Je suis à la recherche d'un scénario comme si vous obteniez un lien dans l'écoute gmail sur lequel l'utilisateur devrait être dirigé vers l'application mobile. Comment puis-je commencer à tester quelque chose comme ça en utilisant un expresso?

Merci d'avance.

+0

Possible copie de [Comment écrire des tests pour les liens profonds dans Android?] (Https://stackoverflow.com/questions/42951216/how-to-write-tests-for-deep-links-in-android) – Ixx

Répondre

1

Commencez par une règle d'activité

@Rule 
public ActivityTestRule<YourAppMainActivity> mActivityRule = 
      new ActivityTestRule<>(YourAppMainActivity.class, true, false); 

Alors, vous voulez quelque chose à analyser l'uri du lien et retourner l'intention

String uri = "http://your_deep_link_from_gmail"; 
private Intent getDeepLinkIntent(String uri){ 
     Intent intent = new Intent(Intent.ACTION_VIEW, 
       Uri.parse(uri)) 
       .setPackage(getTargetContext().getPackageName()); 


     return intent; 
    } 

Ensuite, vous voulez que la règle d'activité pour lancer l'intention

Intent intent = getDeepLinkIntent(deepLinkUri); 
mActivityRule.launchActivity(intent); 
0

bien IntentTestRule ne fonctionne pas correctement. Je vais donc essayer comme ça avec un ActivityTestRule:

public ActivityTestRule<MyActivity> activityTestRule = new ActivityTestRule<MyActivity>(MyActivity.class, false, false); 

Et puis je vais écrire le test approprié UI unité à quelque chose comme ceci:

@Test 
public void testDeeplinkingFilledValue(){ 
     Intent intent = new Intent(InstrumentationRegistry.getInstrumentation() 
       .getTargetContext(), MyActivity.class); 

     Uri data = new Uri.Builder().appendQueryParameter("clientName", "Client123").build(); 
     intent.setData(data); 

     Intents.init(); 
     activityTestRule.launchActivity(intent); 


     intended(allOf(
       hasComponent(new ComponentName(getTargetContext(), MyActivity.class)), 
       hasExtras(allOf(
         hasEntry(equalTo("clientName"), equalTo("Client123")) 
       )))); 
     Intents.release(); 
} 

Avec cela, vous allez vérifier que le deeplink avec un paramètre de requête donné est effectivement récupéré correctement par votre activité qui gère l'intention pour le lien profond.