java如何在Android应用程序和本地单元测试中加载相同的JSON文件?
我有一个Android项目,它显示JSON文件中的数据。按照以下方法从资产目录中读取文件:
src/main/assets/my_file.json
InputStream is = getResources().getAssets().open(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// use StringBuilder to get file contents as String
我还有需要相同JSON文件的本地单元测试。为了避免仪器测试的缓慢,我目前正在加载文件的副本,如下所示:
src/main/resources/my_copy.json
File testData = new File(getClass().getResource(filename).getPath());
InputStream is = new FileInputStream(testData);
// read File as before
是否有一种方法允许JSON文件存储在一个位置,同时在本地JVM上运行单元测试
# 1 楼答案
可以使用ClassLoader#getResourceAsStream()在Android应用程序中访问资源目录中的文件。这将返回一个InputStream,然后可用于读取文件。这样可以避免在资源和资产目录之间复制文件
# 2 楼答案
如果您使用的是机器人分子,请参见this answer
请注意,“资产”目录是一个Android概念,它不同于Java资源。也就是说,您还可以将JSON文件从
assets
移动到resources
,并像在任何Java应用程序中一样,从Android和JVM表单中使用它