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

在Karate测试中调用Java函数时如何传入HashMap?

在Karate测试中调用接收HashMap参数的Java类

问题核心

Karate中直接定义的JSON对象(如{ "name": "Mike" })并非Java原生的HashMap类型,直接传入Java方法会触发类型不匹配异常,需要先完成类型转换。

修正方案

方法1:使用Karate内置karate.toMap()转换(推荐)

该方法可快速将Karate JSON对象转为Java HashMap,代码更简洁:

Feature: Calling Kotlin function in Karate

  Scenario: Call Kotlin function
    * def first = karate.toMap({ "name": "Mike" })
    * def second = karate.toMap({ "name": "Jack" })
    * Java.type('testing').testing("/Users/file", first, second)

方法2:手动创建Java HashMap实例

如果需要更精细的控制,可直接实例化Java HashMap并填充数据:

Feature: Calling Kotlin function in Karate

  Scenario: Call Kotlin function
    * def HashMap = Java.type('java.util.HashMap')
    * def first = new HashMap()
    * first.put("name", "Mike")
    * def second = new HashMap()
    * second.put("name", "Jack")
    * Java.type('testing').testing("/Users/file", first, second)

注意事项

  • 确保testing类已添加到Karate的运行类路径中,否则会抛出类找不到的异常。
  • 若Java方法要求HashMap<String, String>泛型,需保证转换后的Map中所有键值均为字符串类型,避免类型转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:59:58