如何使用Espresso意图存根选择图像意图?

时间:2015-08-21 14:08:34

标签: java android android-intent android-testing android-espresso

这是我第一次使用espresso意图,我跟着android-testing项目提供的IntentsBasicSamle但没有解决。

在我的应用程序中,我有一个活动,其中用户选择多个图像,然后返回的图像显示在gridview中,现在通过使用espresso意图我想模拟这个而不用去实际的图像选择器并且每次返回一些指定的图像。 / p>

没有错误,但在运行测试时仍会打开图像选择器窗口。我觉得我做错了,但我没有得到它是如何工作的。

我正在使用apk进行测试。

这就是照片选择器的调用方式

应用代码

这就是我调用选择图像的方式。在onActivityResult中处理意图和结果。

$("#editor").sceditor({
    plugins: "xhtml",
    width: '100%',
    style: "http://www.sceditor.com/minified/jquery.sceditor.default.min.css"
});

$("#btnScrollBar").click(function()
{
    console.log("click");
    $(".sceditor-container iframe").contents().find("body").mCustomScrollbar();
});

测试代码

if (ApiUtils.checkApiLevel(18)) {
        //API18+
        intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    }
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,      getActivity().getString(R.string.fragment_image_selection_select_picture)), 1);

2 个答案:

答案 0 :(得分:5)

最后,这对我有用,发表我的回答

Bundle bundle = new Bundle();
    ArrayList<Parcelable> parcels = new ArrayList<>();
    Intent resultData = new Intent();
    Uri uri1 = Uri.parse("file://mnt/sdcard/img01.jpg");
    Parcelable parcelable1 = (Parcelable) uri1;
    parcels.add(parcelable1);
    bundle.putParcelableArrayList(Intent.EXTRA_STREAM, parcels);
    // Create the Intent that will include the bundle.
    resultData.putExtras(bundle);

    intending(not(isInternal())).respondWith(new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData));

权限

 @Rule public GrantPermissionRule permissionRule = GrantPermissionRule.grant(android.Manifest.permission.YOUR_PERMISSION; 

答案 1 :(得分:0)

正在努力尝试.. 在@Before Menthod

Intent resultData = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intending(not(isInternal())).respondWith(new Instrumentation.ActivityResult(Activity.RESULT_OK, resultData));

和Test Medthod是:

onView(withId(R.id.imgSelect)).perform(click());
onView(withId(R.id.img1)).check(matches(CustomMatcher.hasDrawable()));