微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用集成测试时,Gradle无法从AndroidManifest.xml中正确获取元数据

快速摘要:我正在尝试使用Android Studio 1.2.2上的gradlew connectedAndroidTest进行集成测试,但是我收到以下错误

Position 28:28-65 : No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').
Position 31:28-51 : No resource found that matches the given name (at 'value' with value '@string/google_maps_key').

全文:
我有两个不同的AndroidManifest.xml,一个用于发布,一个用于集成/检测测试.

我使用以下方法执行仪器测试:

gradlew connectedAndroidTest

这使用位于… / src / androidTest /的AndroidManifest.xml并构建并运行android测试.它看起来像这样:
    

<uses-sdk android:targetSdkVersion="22" android:minSdkVersion="15"/>

<uses-feature
    android:glEsversion="0x00020000"
    android:required="true"/>

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application>
    <Meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <Meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key" />

    <uses-library android:name="android.test.runner"/>
</application>

<instrumentation android:name="android.test.InstrumentationTestRunner"
    android:label="Tests for com.company.app"
    android:functionalTest="false"
    android:handleProfiling="false"
    android:targetPackage="com.company.app"/>

</manifest>

当我单独运行应用程序(而不是集成测试位)时,它可以正常工作,即它可以获取谷歌播放版本和谷歌地图密钥.但是,当我使用上面的AndroidManifest.xml进行集成测试时,我得到了上述错误.

它与gradle有关,使用上面给出的AndroidManifest.xml来生成一个,但是这样做它不会获取“@ integer / google_play_services_version”的值,而只是将它用作文字.

任何帮助将非常感激.
谢谢

编辑

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsversion "22.0.1"

    defaultConfig {
        applicationId "com.minttea.halalit"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    testOptions {
        unitTests.returnDefaultValues = true
    }
}

dependencies {
    compile filetree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.loopj.android:android-async-http:1.4.6'
    compile 'com.google.android.gms:play-services:6.+'

    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.0.8-beta'
    testCompile 'org.json:json:20141113'
    androidTestCompile 'junit:junit:4.12'
}

解决方法:

我想这是因为它试图在测试资源中找到这些资源.作为一个快速解决方案,尝试在androidTest /下创建res文件夹,并在那里复制所请求的资源.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐