首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在json上使用Junit断言,元素数组在第一个元素上失败

在json上使用Junit断言,元素数组在第一个元素上失败
EN

Stack Overflow用户
提问于 2019-05-31 20:27:04
回答 1查看 752关注 0票数 0

我正在尝试使用Katalon来实现一些use服务自动化。我一直在学习如何使用jsonslurper解析返回的Json。如指南所述,https://docs.katalon.com/katalon-studio/tutorials/parse_json_responses.html一切都很好。我想看看是否可以使用junit断言,特别是assertEquals()来获得更好的错误文本。既然我们有这个

代码语言:javascript
复制
import groovy.json.JsonSlurper

String jsonString = {"menu": {
"id": "file",
"tools": {
"actions": [
{"id": "new", "title": "New File"},
{"id": "open", "title": "Open File"},
{"id": "close", "title": "Close File"}
],
"errors": []
}}}
JsonSlurper slurper = new JsonSlurper()
Map parsedJson = slurper.parseText(jsonString)

def array1 = parsedJson.menu.tools.actions

String onlickValue1 = ""

for(def member : array1) {
assertEquals("Open File", member.title)
break
}

我遇到的问题是,当比较它遇到的第一个title元素(即"New“)时,我的断言会抛出一个错误。

我打算循环遍历数组中的所有元素,并针对所有元素断言我的预期值。如果我的期望值不存在,那我就失败了。

我觉得我遗漏了一些东西,因为我们过去在java上做过类似的事情,但我在这里看不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 19:08:47

所以我发现问题是我缺乏经验/无知。当我在网上寻找解决方案时,我完全不明白我要实现的代码是做什么的。我使用一个for.each循环来根据我的期望值断言数组中的元素。当然,对于每一个不符合我预期值的元素,这都是错误的。因此,我添加了一个if语句,如下所示:

代码语言:javascript
复制
String expectedValue = ''
for(def member : array1) {
if (member.title=="Open File")
{
expectedValue = member.title
}
break
}
assertEquals("Open File", member.title)

另外,我发现的一种更简单的方法是以下面的方式使用assertJ ( assertThat(member).contains("Open File") )

我知道有更好的解决方案来实现我想要做的事情。但就这个问题而言,我认为它已经解决了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56401360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档