使用android espresso自动深度链接

时间:2017-05-19 15:46:06

标签: android deep-linking android-espresso

我想编写espresso脚本来测试深层链接,并且不知道如何开始。寻找能帮助我获得更多想法的解决方案,可能是如何开始的一步一步的程序。

对于ex:我正在寻找一个场景,比如你在gmail中获取一个链接,点击哪个用户应该指向移动应用。我如何使用浓缩咖啡开始测试这样的东西?

提前致谢。

2 个答案:

答案 0 :(得分:3)

从活动规则开始

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

答案 1 :(得分: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();
}

通过这种方式,您将测试具有给定查询参数的深层链接实际上是由正在处理深层链接的Intent的活动正确检索的。