单元测试Android和权限

use*_*173 8 permissions android unit-testing android-testing

我的Android应用程序的junit测试需要android.permission.WRITE_SETTINGS.我正在使用IntelliJ Idea 11.1.2并在他们自己的模块中进行单元测试,其中包含用于测试的第二个AndroidManifest.xml.

我添加<uses-permission android:name="android.permission.WRITE_SETTINGS" />到测试模块的AndroidManifest.xml中.

错误:java.lang.SecurityException: Permission Denial: writing com.android.providers.settings.SettingsProvider uri content://settings/system from pid=1063, uid=10035 requires android.permission.WRITE_SETTINGS

丑陋的快速修复:我也将相同的权限添加到应用程序的AndroidManifest.xml中.测试运行没有一个错误.

问题:我不想让整个应用程序获得更改设置的权限.

有没有办法只为测试提供权限?

yor*_*rkw 5

有没有办法只为测试提供权限?

简短的回答是否定的.

你的Android测试项目和Android应用程序项目实际上是两个应用程序,test.apk工具app.apk和运行时.<uses-permission>是每个应用程序,将它添加到测试项目的AndroidManifest.xml中,只为test.apk提供所需的权限,而不是测试中的应用程序,即app.apk.

  • 正如你所说,向测试项目的AndroidManifest.xml 添加权限只授予test.apk 权限,我同意。那么为什么在测试中编写的代码在使用此权限时会出现此错误? (3认同)