8

私はAndroid app with deep link casesのテストをUIテストフレームワーク(Espresso)を使って書いてみたいと思います - ACTION_VIEWインテントのみを使用してアプリケーションを起動し、開いている画面ですべてのビューをチェックしてください。Androidでディープリンクのテストを書く方法は?

しかし、エスプレッソ(エスプレッソインテントでさえ)にはこの機能がなく、アクティビティクラスを定義する必要があります。

私はこの方法で試してみましたが、起動されたアプリがAppLauncherActivity(エスプレッソで必須)を使用して2回起動され、ディープリンク経由で起動されるため正しく動作しません。

@RunWith(AndroidJUnit4.class) 
public class DeeplinkAppLauncherTest { 

    @Rule 
    public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<>(AppLauncherActivity.class); 

    @Test 
    public void testDeeplinkAfterScollDownAndBackUp() { 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("myapp://search/777")); 
     activityRule.launchActivity(intent); 

     onView(withId(R.id.search_panel)).check(matches(isDisplayed())); 
    } 

} 

標準の起動なしにディープリンクのみを使用してテストアプリを起動したいと思います。 あなたはそれを行う方法を知っていますか?

+0

を私はすでにここで質問の同じ種類に答えます。https:// stackoverflow.com/questions/44074173/automating-deep-linking-using-android-espresso/47813474#47813474それが役に立てば幸い! –

答えて

4

を開始することを防ぐ必要があります - ちょうど追加ディープリンクが存在していた意図のパラメータを開くことと、標準活性打ち上げ使用:

@Rule 
public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<AppLauncherActivity>(AppLauncherActivity.class){ 
    @Override protected Intent getActivityIntent() { 
     Intent intent = super.getActivityIntent(); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("myapp://search/777")); 
     return intent; 
    } 
}; 
2
@Rule 
public ActivityTestRule<AppLauncherActivity> activityRule = new ActivityTestRule<>(AppLauncherActivity.class, false, false); 

ActivityTestRuleを作成するコンストラクタは複数あります。 3番目はlaunchActivityです。上記のようにfalseに設定すると、そのアクティビティは後でactivityRule.launchActivity(intent)で手動で開始されるためです。これは私が一つの選択肢見つけ倍

関連する問題