gpt4 book ai didi

android - 如何使用 Espresso stub Intent.createChooser Intent

转载 作者:行者123 更新时间:2023-12-05 06:20:07 28 4
gpt4 key购买 nike

问题

我的应用程序中有一张图片,我正在将它分享到任何其他可以处理图片共享的应用程序,并且该功能运行正常。

我正在编写一个 Espresso UI 测试来拦截 Intent 并确保它具有正确的操作和附加功能,但似乎无法让它工作。

代码

创建 Intent 时的代码如下:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType(MediaType.PNG.toString());
startActivity(Intent.createChooser(intent, "send");

这是我在测试中尝试匹配 Intent,但未能找到匹配项:

Intents.init();
launchActivity(MyFragment.newIntent(getTargetContext());

Matcher<Intent> expectedIntent = allOf(
hasAction(Intent.ACTION_CHOOSER),
hasExtra(
Intent.ACTION_SEND,
hasExtra(Intent.EXTRA_STREAM, EXPECTED_SHARE_URI) // Expected URI has been copied from the extras 'uriString' value when debugging
)
);
intending(expectedIntent).respondWith(new Instrumentation.ActivityResult(0, null));
MyScreen.clickShareButton(); // performs click on the share button
intended(expectedIntent);
Intents.release();

错误

IntentMatcher:(具有操作:是“android.intent.action.CHOOSER”并且具有附加功能:具有 bundle :键:是“android.intent.extra.STREAM”值:是“[我的 uri 出现这里]")

附加信息

调试时,创建的 Intent 会产生一个带有操作“android.intent.action.CHOOSER”的 Intent,并且有一个额外的 Intent 类型,带有操作“android.intent.action.SEND”和类型“image”/png”,然后有一个额外的,一个带有 uriString 的 HierarchicalUri。

总结

有人知道我做错了什么吗?我找不到将所有这些联系在一起并为此 Intent 创建匹配器的方法。任何帮助将不胜感激!

最佳答案

如果你在 intended(expectedIntent) 这一行遇到错误,因为 Intent 不匹配,这可能是因为 Intent.createChooser 将你的 Intent 作为一个带有键 Intent.EXTRA_INTENT 的额外数据。在您的情况下,您只需要为选择器添加一个额外的 Intent 匹配器:

Matcher<Intent> intent = allOf(
hasAction(Intent.ACTION_SEND),
hasExtra(Intent.EXTRA_STREAM, EXPECTED_SHARE_URI)
);

Matcher<Intent> expectedIntent = allOf(
hasAction(Intent.ACTION_CHOOSER),
// Intent.createChooser put your intent with the key EXTRA_INTENT
hasExtra(Intent.EXTRA_INTENT, intent)
);

intending(anyIntent()).respondWith(new Instrumentation.ActivityResult(0, null));

MyScreen.clickShareButton();

intended(expectedIntent);

关于android - 如何使用 Espresso stub Intent.createChooser Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60628692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com