繁体   English   中英

如何在授予所有Android M权限的情况下运行单元测试?

[英]How to run unit tests with all Android M permissions granted?

在安装Android应用程序时是否有允许adb命令行选项的gradle插件? 我希望在Android M设备上运行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
    }
}
}

您只能进行单元测试才能进行仪器测试。 参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM