【问题标题】:Android 3.1: Unit Testing a Class that Request User PermissionsAndroid 3.1:对请求用户权限的类进行单元测试
【发布时间】:2018-04-11 03:02:04
【问题描述】:

我有一个一键式应用程序,按下时会拨打电话。该应用程序使用 MVP 架构。请求用户拨打电话许可的逻辑放置在演示者 (P) 包中。

现在,我想设置一个单元测试,以验证该类是否准确地请求用户拨打电话的权限,但我在开始时遇到了问题。有一个 SO 问题:Android Marshmallow: Test permissions with Espresso? 试图解决这个问题,说明必须同时使用 UIAutomation 和 Espresso。这只是一个不够明确的答案来适用于这个问题。

有人可以提供解决方案来帮助设置此单元测试吗?

MainActivityPresenter 类

public class mainActivityPresenter {
    final int REQUEST_PHONE_CALL = 1;

    public void checkPhonePermissions(View view, MainActivity mainActivity){
        ActivityCompat.requestPermissions(mainActivity, new String[]{Manifest.permission.CALL_PHONE},REQUEST_PHONE_CALL);
    }

 }

【问题讨论】:

    标签: java android unit-testing android-permissions android-mvp


    【解决方案1】:

    check GrantPermissionRule.Rule 允许在 Android M (API 23) 及更高版本上授予运行时权限。当测试需要运行时权限才能完成其工作时,请使用此规则。

    【讨论】:

    • 我正在 Android (API 14) 上运行测试。有没有早期 Android SDK 版本的替代品?
    • 如果你的设备API等级低于23,你可以使用adb shell pm grant "com.your.package" android.permission.your_permission
    • 我看不到使用 shell 命令测试权限如何测试 mainActivityPresenter 类?我们不能模拟“view”和“mainActivity”参数来测试“mainActivityPresenter”类是否正常工作吗?
    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多