Android instrumentTest源集是否可以拥有自己的资产?

Android instrumentTest源集是否可以拥有自己的资产?,android,gradle,android-testing,Android,Gradle,Android Testing,我需要测试构建来拥有自己的资产 源集结构 ├── build.gradle ├── libs └── src ├── instrumentTest │   ├── assets │   └── java └── main ├── AndroidManifest.xml ├── assets ├── java └── res 我试过什么 apply plugin: 'android' reposit

我需要测试构建来拥有自己的资产

源集结构

├── build.gradle
├── libs
└── src
    ├── instrumentTest
    │   ├── assets
    │   └── java
    └── main
        ├── AndroidManifest.xml
        ├── assets
        ├── java
        └── res
我试过什么

apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.2'

    // There were no soureSets in my project in the first place
    // I have added sourceSets for instrumentTest, but that made no difference
    sourceSets {
        instrumentTest {
            java.srcDir 'src/instrumentTest/java'
            assets.srcDir 'src/instrumentTest/assets'
        }
    }

    buildTypes {
        debug {
            runProguard false
        }

        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}
运行

./gradlew connectedCheck
失败于

java.io.FileNotFoundException: busybox
at android.content.res.AssetManager.openAsset(Native Method)
排队

final InputStream is = context.getAssets().open("busybox");

instrumentTest资产打包为instrumentation测试的一部分,而不是被测试的应用程序-您可能正在使用目标应用程序的上下文而不是instrumentation上下文,这就是它找不到资产的原因

可以使用getInstrumentation().getContext()以任何方式获取检测上下文

通过使用getInstrumentation().getContext().getAssets()获取AssetManager,您应该能够读取instrumentTest资产