我正在尝试使用以下目录结构(由 Android Studio 设置)进行测试:
我可以跑some测试很好,甚至AllTests.java
运行良好,无需AndroidManifest.xml
文件甚至在那里。问题是,对于我的一项新测试,我需要android.permission.INTERNET
允许。所以,我将以下内容添加到AndroidManifest.xml
文件位于androidTest
目录:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.core"
android:versionCode="2"
android:versionName="2.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
不幸的是,这不起作用。当我运行其中一项测试时,我仍然收到以下错误:
E/RestAPIRequestTest:权限被拒绝(缺少 INTERNET 权限?)
我尝试过设置package
to be com.example.core.test
in my AndroidManifest.xml
文件(因为它显示在我的“设置”->“应用程序”列表中),但没有任何乐趣。
我想它甚至没有认识到AndroidManifest.xml
文件,因为版本号也不会显示在测试应用程序的“设置”中。
如何为我的测试项目注入正确的权限?
我遇到了类似的问题,我在哪里解决它:
- 创建一个名为“
debug
“ 旁边 ”androidTest
” 文件夹,对应于debug
应用程序的变体,
- Put an
AndroidManifest.xml
文件,其中包含所需的权限,在所述“debug
“ 文件夹。
- 现在(重新)构建,并且该权限正在测试中工作,因为测试应用程序使用调试变体。
它并不理想,因为它模糊了测试和调试之间的界限,而这并不是一回事。
Update;发生的事情是:
-
有多个构建类型,如“调试”和“发布”。
-
每个都可以有一个AndroidManifest.xml
文件,位于具有匹配名称的相关文件夹中,例如“debug”和“release”文件夹。
-
但“androidTest”不是构建类型(在撰写本文时),因此 Gradle 的默认值是testBuildType
选项是“调试”
(如文档mention https://developer.android.com/build/gradle-tips#change-the-test-build-type), like:
android {
// ...
testBuildType "debug"
}
-
所谓的 Gradle 插件对这种不一致的处理很差
(“com.android.tools.build:gradle:7.1.3”)。
-
而事实上,“androidTest/AndroidManifest.xml
“ 文件仅适用于库项目
(在撰写本文时,不是应用程序)。
Note即使我们手动设置清单路径,例如:
android {
sourceSets {
androidTest {
manifest.srcFile "${project.rootDir}/AndroidManifest.xml"
}
}
}
它被默默地忽略了androidTest
源集(使用 Gradle 7.5.1 测试),
而类似的设置适用于main
源集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)