在我的Android项目中,我有一个res/raw/config.json%的文件.在Android应用程序中,可以通过resources.openRawResource()访问该文件.

有没有一种方法,如何从单元测试(未插入指令)访问此文件?文件存在于计算机上的项目中,因此它应该是可能的…

有一种明显的解决办法,即复制文件内容并将其内联到测试.

我遇到了下面的code snippet on Gist个,但我想不出来,文件名应该是什么…以下方法不起作用……

javaClass.classLoader?.getResourceAsStream("config.json") 
javaClass.classLoader?.getResourceAsStream("raw/config.json")
javaClass.classLoader?.getResourceAsStream("res/raw/config.json")  

推荐答案

在单元测试中,您不能像在常规Android代码中那样使用res/raw/路径直接访问资源,因为单元测试在Android运行时环境之外运行.但是,您可以使用ClassLoader访问src/test/resources目录中的文件.以下是你如何做到这一点:

  • 在您的项目中将config.json文件从res/raw/移到src/test/resources/.

  • 然后,您可以在单元测试中使用ClassLoader访问该文件

Android相关问答推荐

derivedStateOf与使用key和MutableState记住

DocumentFile.canWrite()、DocumentFile.Existes()-使用本地内置手机存储(而不是云)时性能较差(占用太多CPU时间)

如何制作安卓';s FileProvider在Android 11上使用外部存储+

如何将 Room Persistence 依赖项正确添加到我的 Jetack Compose Android 应用程序

activity在 Runnable 中如何工作?我的 Android 表格未显示

如何在C++中使用JNI_GetCreatedJavaVMs调用Java代码

Jetpack Compose 中的用户在线指示器

当 Firebase Firestore 发生变化时,Kotlin ViewModel 不会更新

在段的中心绘制饼图(甜甜圈图)的图例

为什么我要使用 $version 而不是2.7.0?

PayUCheckoutPro Android SDK 实现问题

如何在 Jetpack Compose 中的 VisualTransformation 之后将光标保持在文本字段的末尾

Jetpack Compose:SpanStyle 的 TextAlign(垂直居中)

我的 react native 项目的发布签名 apk 没有在设备中打开,而且它创建的尺寸非常小

如何为具有不同屏幕尺寸但相同密度的手机创建响应式布局?

如何让用户与任意应用程序共享文件?

使用协程访问数据库

(Android) 如何在一对多关系中将子 ID 与父级匹配

在使用 Retrofit 和 Room 时,我是否需要提及协程调度程序?

在 Android Studio 中保存数据