如何从单元测试中读取资源文件?

Rul*_*ule 5 java junit android

我的 Android 项目中有一个仅限 Java 的模块。在那个项目中,我想要一个单元测试,它从存储在资源文件夹中的本地 json 文件中读取内容。Android Studio 更改了资源文件夹的图标,因此我认为它会将其识别为资源文件夹。

我的阅读方式:

String json = Files.lines(Paths.get("file.json"))
                .parallel()
                .collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)

文件夹结构:

+project
  +app (android)
  +module (java only)
    +src
      +main
        +java
          +package
            -the java file
        +resources
            -file.json
Run Code Online (Sandbox Code Playgroud)

我的问题是如何读取文件?

更新如下

URL resource1 = getClass().getResource("file.json");
URL resource2 = getClass().getClassLoader().getResource("file.json");
URL resource3 = Thread.currentThread().getContextClassLoader().getResource("file.json");
URL resource4 = ClassLoader.getSystemClassLoader().getResource("file.json");
Run Code Online (Sandbox Code Playgroud)

所有这些都是空的。我也复制了 json 文件resources/same.package.structure,但没有成功。

Ant*_*kov 7

不需要用类加载器做所有这些复杂的事情。您可以从 /test/* 类访问 test/resources 目录。

在此输入图像描述

在此输入图像描述

UPD 这是如何使用 SimpleXML 使用文件路径反序列化文件。所以这里的源方法参数是你的资源文件的路径

在此输入图像描述

  • @Rule 老兄,这与儿子或 xml 无关。您的问题是关于如何从资源中读取文件 YOURCLASS yourclass = new Gson().fromJson(File(PATH), YOURCLASS.class); 这是使用 GSON 反序列化 json 文件的方法 (2认同)

Rul*_*ule -1

显然这是一个错误,现在应该修复: https ://issuetracker.google.com/issues/63612779

感谢大家的帮助