gpt4 book ai didi

android - instrumentTest 源集可以有自己的 Assets 吗?

转载 作者:行者123 更新时间:2023-11-30 03:04:53 25 4
gpt4 key购买 nike

我需要 instrumentTest build 来拥有它自己的 Assets 。

源集结构

├── 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 Assets 被打包为仪器测试的一部分,而不是被测试的应用程序 - 您可能正在使用目标应用程序的上下文而不是仪器上下文,这就是它找不到 Assets 的原因。

您可以在任何 InstrumentationTestCase 中使用 getInstrumentation().getContext() 获取检测上下文.

您应该能够通过使用 getInstrumentation().getContext().getAssets() 获取 AssetManager 来读取您的 instrumentTest Assets 。

关于android - instrumentTest 源集可以有自己的 Assets 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com