【问题标题】:How do I change android.permission settings when running tests运行测试时如何更改 android.permission 设置
【发布时间】:2016-11-15 18:29:15
【问题描述】:

问题

如果第一方库提供了权限,我正在开发使用地理位置的第三方库。我想测试行为,但无法使用清单中设置的权限发布我的应用程序(b/c 那么它不是可选的)。

是否有设置例如 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 仅在我运行测试时?

详情

我正在使用 gradle 构建工具 com.android.tools.build:gradle:0.12.2 并遵循 androidTest 目录约定。我的项目如下所示:

tree src -L 3 src ├── androidTest │   ├── java │   │   └── com │   └── resources └── main ├── AndroidManifest.xml └── java └── com

我尝试在 androidTest 文件夹中添加第二个清单(我将包更新为:package="com.myapp.test"),但地理权限没有生效。

我考虑过改用 robolectric,但宁愿短期使用仪器测试。请告知这是否会使这更容易。

【问题讨论】:

    标签: android testing android-gradle-plugin


    【解决方案1】:

    我找到了一个不错的解决方案(不是最干净的 IMO):

    将此添加到您的<appname>/build.gradle

    android {
      ...
      sourceSets {
        debug {
          manifest.srcFile 'src/androidTest/AndroidManifest.xml'
        }
      }
      ...
    }
    

    然后,当然,在 src/androidTest/ 中创建一个具有您所需权限的 AndroidManifest.xml 文件。
    我是从Android issue tracker 中抓到这个的。

    【讨论】:

    • 谢谢,我试试看。
    • 我还没来得及测试。 (我很欣赏这个答案,但我被淹没了。)这周我会试试的。
    • 我无法完成这项工作。运行 android 测试时会自动获取清单,这使我无法覆盖清单。我确实认为这些方面的东西应该起作用。也许我应该在这里做更多的事情。
    • 嗯...也许将 sourceSets.debug 设置为 sourceSets.androidTest 会修复它...
    • 我尝试配置各种源集。我认为这可能只是目前 Android 的一个限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2011-11-18
    • 1970-01-01
    相关资源
    最近更新 更多