You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JUnit 5测试Spring Rest/MVC项目时无法读取resource目录下Cats.json文件

根因分析

你当前使用new File("Cats.json")的方式是基于进程运行时的工作目录查找文件,而非读取classpath下的资源文件。你主程序运行时逻辑正常,是因为主程序的运行工作目录下刚好存在该文件,这不属于标准的资源读取实现,所以在JUnit测试场景下会出现路径不匹配的问题。

解决方案

临时兼容方案

你已经验证过JUnit测试运行时的工作目录为项目根路径(和pom.xml、src目录同级),直接将Cats.json文件复制一份到该根路径下即可临时解决找不到文件的问题,该方案无需修改业务代码,但不适合长期使用。

标准优化方案

修改CatRepositoryBackupRepo类的资源读取逻辑,通过类加载器读取classpath下的资源文件,完全脱离工作目录的限制:

  1. 替换原有文件声明逻辑:
// 原有代码
// private File datei = new File("Cats.json");

// 替换为以下逻辑
URL resource = getClass().getClassLoader().getResource("Cats.json");
if (resource == null) {
    throw new RuntimeException("未找到Cats.json资源文件");
}
private File datei = new File(resource.toURI());
  1. 确保Cats.json文件分别存放在src/main/resources(主程序用)和src/test/resources(测试用)目录下即可,Maven默认配置会自动将这两个目录下的文件加入运行时classpath,JUnit测试时会优先读取test目录下的资源文件。
补充说明

如果修改后仍读不到文件,可检查Maven的pom.xml配置,确认是否开启了默认的资源处理逻辑,没有自定义排除resources目录下的json文件即可。

内容的提问来源于stack exchange,提问作者IngmarEckhardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:15:03