gpt4 book ai didi

android - 尝试使用 Robolectric 读取 Assets 时出现 FileNotFoundException

转载 作者:行者123 更新时间:2023-12-01 16:37:44 24 4
gpt4 key购买 nike

我正在尝试运行一个测试,需要使用 roboelectric 3.3.2 访问 Assets 文件夹中的文件

RuntimeEnvironment.application.getAssets().open("my_file");

但我总是收到此错误

java.io.FileNotFoundException:build/intermediates/bundles/debug/assets/my_file(没有这样的文件或目录)

我真正无法理解的是,即使我以这种方式指定 Assets 目录的路径

@Config(constants = BuildConfig.class, sdk = 23, assetDir = "/home/")

我仍然遇到相同的错误,我的意思是具有相同路径 build/intermediates... 的错误,所以 assetDir 值被忽略?或者我在这里遗漏了什么?

是否可以轻松地从资源文件夹中打开文件?

编辑

按照建议,我尝试将 Assets 文件复制到 test/resources 文件夹,但仍然遇到相同的错误,仍然与 build/itermediates.. 路径相同的 FileNotFoundException

android {
sourceSets {
String sharedTestJavaDir = 'src/sharedTest/java'

test {
java.srcDirs += [sharedTestJavaDir]
}
androidTest {
java.srcDirs += [sharedTestJavaDir]
resources.srcDirs += ['src/test/resources']
}
}
}

最佳答案

Roboletric 无法读取实际的设备断言文件夹,因此您必须虚拟定义某个位置并将资源转储到该路径,如下代码:

对于 robolectric,您必须定义断言路径,如下所示:

android {
sourceSets {
String sharedTestJavaDir = 'src/sharedTest/java'

test {
java.srcDirs += [sharedTestJavaDir]
}
androidTest {
java.srcDirs += [sharedTestJavaDir]
resources.srcDirs += ['src/test/resources']
}
}
}

通过这种方式从 androidTest 环境访问固定文件:

this.getClass().getClassLoader().getResourceAsStream(filename);

关于android - 尝试使用 Robolectric 读取 Assets 时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249462/

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