【问题标题】:How do I unit-test this class in Android?如何在 Android 中对此类进行单元测试?
【发布时间】:2016-08-08 08:16:10
【问题描述】:

我如何在 Android 中测试这个类,以验证它确实打开了一个电子邮件发件人应用选择器,并且当一个应用被选中时,这些字段被预先填写并附加了文件?

应该是单元测试还是集成测试或通过 UI 进行的自动化测试。 我需要什么样的设置以及如何单独测试这个类:

public class EmailSender {

    public static void sendEmailWithAttachment(Context context,
                                               String[] recipient,
                                               String subject,
                                               String attachmentFilePath) {
        Intent emailIntent = new Intent(Intent.ACTION_SEND);
        emailIntent .setType("vnd.android.cursor.dir/email");
        emailIntent .putExtra(Intent.EXTRA_EMAIL, recipient);
        emailIntent .putExtra(Intent.EXTRA_STREAM, attachmentFilePath);
        emailIntent .putExtra(Intent.EXTRA_SUBJECT, subject);
        context.startActivity(Intent.createChooser(emailIntent , "Send email..."));
    }

}

【问题讨论】:

标签: android unit-testing android-testing android-espresso


【解决方案1】:

您可以在 Robolectric 的帮助下尝试对此进行单元测试。 调用 sendEmailWithAttachment 方法时,可以检查 Intent 是否完成了启动邮件发送应用的工作,

ShadowActivity shadowActivity = shadowOf(activity);
    Intent startedIntent = shadowActivity.getNextStartedActivity();
    ShadowIntent shadowIntent = shadowOf(startedIntent);
    assertThat(shadowIntent.getComponent().getClassName(), equalTo(targetActivityName));

您还可以验证意图的内容。

有关如何使用 Robolectric 的更多详细信息,您可以参考http://www.vogella.com/tutorials/Robolectric/article.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 2022-11-17
    • 1970-01-01
    相关资源
    最近更新 更多