【问题标题】:How to run unit tests with all Android M permissions granted?如何在授予所有 Android M 权限的情况下运行单元测试?
【发布时间】:2016-01-02 14:02:18
【问题描述】:

在安装 android 应用程序时是否有允许 adb 命令行选项的 gradle 插件?我希望在 Android M 设备上运行 robotsium 测试,同时忽略弹出的要求摄像头、麦克风等权限的权限对话框。

【问题讨论】:

    标签: android unit-testing robotium


    【解决方案1】:

    在 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
        }
    }
    

    【讨论】:

      【解决方案2】:
      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

      【讨论】:

        猜你喜欢
        • 2018-08-05
        • 1970-01-01
        • 2017-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-09
        • 1970-01-01
        相关资源
        最近更新 更多