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

Karate API:如何通过JUnit Runner读取/src/test/resources下的JSON文件

解决Karate API读取src/test/resources下JSON文件的问题

核心问题是运行时工作目录差异和classpath资源引用的正确方式,直接按以下方法修复:

正确的资源引用方式

在mytest.feature中直接使用classpath:前缀引用根路径下的JSON文件即可。因为src/test/resources目录下的文件会被Maven/Gradle等构建工具自动复制到target/test-classes(也就是测试环境classpath的根目录),无需额外路径层级:

* def content = read('classpath:response.json')

为什么之前的写法失效

  1. 相对路径依赖工作目录:../../../resources/response.json这种写法完全依赖当前运行的工作目录。直接运行feature文件时,工作目录是项目根目录,路径有效;但JUnit Runner运行时,工作目录通常切换到target目录,导致相对路径无法定位到原始资源文件。
  2. 错误的classpath层级理解:classpath:../resources/response.json是错误用法,因为classpath的根已经是target/test-classes,而src/test/resources下的文件会被直接复制到这里,不存在../resources的层级结构。

额外验证步骤

  • 确认src/test/resources/response.json文件存在,且构建工具配置中没有排除该文件(Maven默认会包含,Gradle需确保sourceSets.test.resources.srcDirs配置包含src/test/resources)。
  • 运行JUnit Runner前,先执行mvn test-compile(Maven)或gradle testClasses(Gradle),确保资源文件已复制到target/test-classes目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:24:59