androidTest 目录中的 AndroidManifest 被忽略

2023-12-19

我正在尝试使用以下目录结构(由 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(使用前将#替换为@)

androidTest 目录中的 AndroidManifest 被忽略 的相关文章

随机推荐