【发布时间】:2016-01-02 14:02:18
【问题描述】:
在安装 android 应用程序时是否有允许 adb 命令行选项的 gradle 插件?我希望在 Android M 设备上运行 robotsium 测试,同时忽略弹出的要求摄像头、麦克风等权限的权限对话框。
【问题讨论】:
标签: android unit-testing robotium
在安装 android 应用程序时是否有允许 adb 命令行选项的 gradle 插件?我希望在 Android M 设备上运行 robotsium 测试,同时忽略弹出的要求摄像头、麦克风等权限的权限对话框。
【问题讨论】:
标签: android unit-testing robotium
在 build.gradle 中
task grantPermissions(type: Exec, dependsOn: 'installDebugAndroidTest') {
def permissions = ['INTERNET',
'GET_ACCOUNTS',
'WAKE_LOCK',
'VIBRATE',
'READ_CONTACTS',
'RECORD_AUDIO',
'CAMERA',
'WRITE_EXTERNAL_STORAGE',
'READ_EXTERNAL_STORAGE']
permissions.each {
commandLine "\$ANDROID_HOME/platform-tools/adb shell pm grant com.singlewire.cirrus android.permission.${it}".split(' ')
}}
tasks.whenTaskAdded { task ->
if (task.name.startsWith('connectedDebugAndroidTest')) {
task.dependsOn grantPermissions
}
}
【讨论】:
android.productFlavors.all { flavour ->
def applicationId = flavour.applicationId
def adb = android.getAdbExe().toString()
def grantPermissionsTask = tasks.create("grant${flavour.name.capitalize()}Permissions") << {
"${adb} shell pm grant ${applicationId} android.permission.ACCESS_FINE_LOCATION".execute()
"${adb} shell pm grant ${applicationId} android.permission.ACCESS_COARSE_LOCATION".execute()
}
grantPermissionsTask.description = "Grants permissions for Marshmallow"
tasks.whenTaskAdded { theTask ->
def assemblePattern = ~"assemble${flavour.name.capitalize()}DebugAndroidTest"
if (assemblePattern.matcher(theTask.name).matches()) {
theTask.dependsOn grantPermissionsTask.name
}
}
}
仪器测试可以这样做,但不能用于单元测试。 Reference
【讨论】: