如何在Android中对此类进行单元测试?

时间:2016-08-08 08:16:10

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

如何在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..."));
    }

}

1 个答案:

答案 0 :(得分:1)

您可以在Robolectric的帮助下尝试进行单元测试。 当你调用方法sendEmailWithAttachment时,你可以检查意图是否执行了启动电子邮件发送应用程序的工作,

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