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资产