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

Karate JUnit5/Core运行TestRunner时data.json路径重复问题求助

解决Karate测试读取data.json时路径重复的问题

问题根源

代码里硬编码了本地绝对路径来引用data.json,而Karate运行时会把src/test/java下的资源文件复制到target/test-classes目录,此时绝对路径会被错误拼接到target路径之后,生成无效路径,最终触发org.opentest4j.AssertionFailedError和java.io.FileNotFoundException。

解决步骤

  • 使用类路径相对引用
    在.feature文件或TestRunner代码里,改用类路径方式读取文件:

    • Feature文件中:read('classpath:Karate/APITESTING/TestData/data.json')
    • Java测试代码(TestRunner)中:
      // 通过类路径获取文件路径
      String jsonPath = getClass().getResource("/Karate/APITESTING/TestData/data.json").getPath();
      // 或者直接读取文件流
      JsonObject data = JsonPath.read(getClass().getResourceAsStream("/Karate/APITESTING/TestData/data.json"), "$");
      
  • 确保资源文件被正确复制到target目录
    若使用Maven,需要在pom.xml中添加配置,让src/test/java下的.json和.feature文件在编译时被复制到target/test-classes:

    <build>
      <resources>
        <resource>
          <directory>src/test/java</directory>
          <includes>
            <include>**/*.json</include>
            <include>**/*.feature</include>
          </includes>
        </resource>
      </resources>
    </build>
    
  • 移除硬编码的绝对路径
    所有引用data.json的地方,删掉类似C:\Users\LHCP\eclipse-workspace\...的本地绝对路径,统一用类路径或相对包路径引用,避免环境切换时的路径问题。

  • 验证资源复制结果
    执行mvn test-compile命令后,检查target/test-classes/Karate/APITESTING/TestData/目录下是否存在data.json,确认资源复制正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:11