我是软件测试的新手,并且在空手道环境中工作。目前我正在处理一个故事,我必须测试数据库条目的最大数量是否正常工作 - 当达到最大条目数(20)时,程序返回 400 错误和一条消息,指出最大条目有已达到。
当已经有 20 个条目时,我们在空手道中的场景通过并且工作正常,但情况并非总是如此,因为不同的测试正在创建和删除条目,因为它们正在处理和运行。目前我已经设置了代码来计算最大化数据库所需的规则数(maxTotalRules-ruleCount)并将其解析为一个 int。然后我将它和一个随机字符串传递给 Java 方法。然后,java 方法使用 for 循环创建一个名称数组(abcd_1、abcd_2 等),无论数据库在其当前状态下需要多少名称,然后返回该数组。
所以我在调用中有我的变量定义,然后记录结果变量以查看它包含它应该包含的内容:
* def ruleNameArray = objUtility.createRuleNameArray(newRuleBase, maxDiffParse)
* karate.log(ruleNameArray)
不过我的问题是空手道中的数组通常打印如下:
[
1,
2
]
返回的数组打印如下:
Automation_Rule-botrrxyo_1 Automation_Rule-botrrxyo_2 Automation_Rule-botrrxyo_3
它在一行中打印,几乎就像是一个大字符串,而不是像数组一样出来。当我尝试使用该数组来构建要传递给我的 API 以添加新数据库条目的请求主体时,我收到以下错误消息:“java.lang.RuntimeException: not map-like or list-like”
这可能是一个很长的解释,但本质上我的问题是为什么我的 Java 方法返回没有被作为数组接收?我该如何解决这个问题?
如果需要上下文/确保我的方法编写正确,这里是 Java 方法:
public String[] createRuleNameArray(String nameBase, int numOfNamesNeeded) {
String[] ruleNameArray;
ruleNameArray = new String[numOfNamesNeeded];
for(int i=0; i < numOfNamesNeeded; i++) {
ruleNameArray[i] = nameBase+(i+1);
System.out.println(ruleNameArray[i]);
}
return ruleNameArray;
}