【发布时间】:2022-10-06 14:02:06
【问题描述】:
我在一个遗留项目上工作。该项目使用低功耗蓝牙与设备连接。当然,我迁移了项目以使用 AndroidX 库。前段时间我开始用 Espresso 编写测试,因为它是测试 Ble 接口的唯一方法,因为 Android Emulator 不支持蓝牙仿真。
该应用程序面向 Android 11,并与 Android 6 之前的早期版本兼容。
当然,我必须使用 JUnit4 规则授予权限以避免权限弹出:
@Rule public GrantPermissionRule permissionRule = GrantPermissionRule.grant(android.Manifest.permission.ACCESS_FINE_LOCATION);
两周前,我的公司决定以 Android 12 为目标。所以我将规则替换为:
@Rule public GrantPermissionRule permissionRule = GrantPermissionRule.grant(
android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_CONNECT);
不幸的是,这条规则没有授予 Android 12 的权限,应用程序会弹出权限,并且我的所有测试(以前运行良好)都会中断。
我还在标记为@Before 的函数中尝试了这个:
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand(
\"pm grant \" + ApplicationProvider.getApplicationContext().getPackageName()
+ \" android.permission.BLUETOOTH_SCAN android.permission.BLUETOOTH_CONNECT\");
这些解决方案都没有避免弹出权限,所以我们所有的蓝牙测试都会刹车。
有谁知道如何授予针对 Android 12 的 Espresso 测试的权限?
提前致谢。
标签: android-espresso android-12