2017-05-19 8 views
3

ディープリンクをテストするためのエスプレッソスクリプトを作成したいと思います。より多くのアイデアを得るのに役立つソリューションを探してください。アンドロイドエスプレッソを使用したディープリンクの自動化

例:gmailでモバイルユーザー向けのリンクを取得するようなシナリオを探しています。エスプレッソを使ってこのようなことをテストするにはどうすればいいですか?

ありがとうございます。アクティビティ・ルールと

+0

[Androidでのディープリンクのテストの書き方は?](https://stackoverflow.com/questions/42951216/how-to-write-tests-for-deep-links-in-android) – Ixx

答えて

1

スタートはその後

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

あなたは何かがリンクからURIを解析し、目的

を起動するためにあなたがしたいそして、活動のルールを意図

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; 
    } 

を返すようにしたいです

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

ウェルIntentTestRuleが正しく動作しません。だから私はActivityTestRuleと、このようにしようとします:

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

そして私はこのようなものにするために、適切なUIユニットテストを書きます。これにより

@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(); 
} 

あなたはディープリンクすることをテストしようとしています指定されたクエリパラメータは、実際に、ディープリンクのインテントを処理しているアクティビティによって正しく取得されています。

関連する問題