在单元测试中,如何在不对路径进行硬编码的情况下从(桌面)文件系统上的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应该将它们标记为如下:
创建gradle任务以将资源复制到classes目录中,以使其对classloader可见:
android{
...
}
task copyResDirectoryToClasses(type: Copy){
from"${projectDir}/src/test/res"
into"${buildDir}/intermediates/classes/test/debug/res"
}
assembleDebug.dependsOn(co