Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件

在Android Studio的单元测试中,如何正确读取json文件作为测试数据?本文探讨了不同版本的Android Gradle插件下,如何在不硬编码路径的情况下,从文件系统或资源目录中读取json数据,包括使用`getClass().getClassLoader().getResourceAsStream()`方法的注意事项,以及解决常见问题的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在单元测试中,如何在不对路径进行硬编码的情况下从(桌面)文件系统上的json文件读取数据?

我想从文件中读取测试输入(用于我的解析方法),而不是创建静态字符串。

该文件与单元测试代码位于同一位置,但是如果需要,我也可以将其放置在项目中的其他位置。 我正在使用Android Studio。

我尝试了几乎所有与IOUtils.toString(this.getClass()。getResourceAsStream(" test_documents.json")," UTF-8")的组合,它始终返回null。 可能是因为文件不会包含在jar中。

我们是否在谈论涉及android模拟器/设备的单元测试?

我认为@ Android777是在谈论最新版本的Android Studio工具中引入的新的单元测试支持。android.com/tech-docs/unit-testing-support

@Frank您将test_documents.json放在哪里? 资产目录?

是的,我们正在谈论新的单元测试支持,而不涉及仿真器/设备。 我没有将其放置在资产目录中,因为那样它将与实时apk打包在一起。 我将其放置在与测试(java)文件相同的文件夹中。

@Frank Ive更新了我的答案,它应该使您满意。

取决于android-gradle-plugin版本:

1. 1.5版或更高版本:

只需将json文件放入src/test/resources/test.json并引用为

classLoader.getResource("test.json").

无需修改gradle。

2. 1.5版以下的版本:(或由于某种原因上述解决方案不起作用)

确保您至少使用了Android Gradle插件版本1.1。按照链接正确设置Android Studio。

创建test目录。将单元测试类放在java目录中,然后将资源文件放在res目录中。 Android Studio应该将它们标记为如下:

d42b1cb5f62880a48ef643e7b30df0bb.png

创建gradle任务以将资源复制到classes目录中,以使其对classloader可见:

android{

...

}

task copyResDirectoryToClasses(type: Copy){

from"${projectDir}/src/test/res"

into"${buildDir}/intermediates/classes/test/debug/res"

}

assembleDebug.dependsOn(co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值