Использование Junit assert для массива элементов json завершается неудачно на первом элементе - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь использовать Katalon Studio для автоматизации некоторых веб-сервисов. Я следовал этому руководству о том, как разобрать возвращенное тело Json с помощью jsonslurper. https://docs.katalon.com/katalon-studio/tutorials/parse_json_responses.html Все работает нормально, как описано в руководстве. Я хотел посмотреть, смогу ли я использовать junit asserts, в частности assertEquals () для лучшего текста ошибки. Учитывая, что у нас есть это

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
}

У меня проблемы с тем, что мой assert выдаст ошибку при сравнении самого первого элемента заголовка, с которым он сталкивается (это «Новый файл»).

То, что я намереваюсь, состоит в том, чтобы пройти через все элементы в массиве и утверждать мое ожидаемое значение против всех них. Если мое ожидаемое значение не существует, я потерплю неудачу.

Я чувствую, что что-то упустил, потому что мы делали нечто подобное в прошлом с Java, но я просто не вижу этого здесь.

1 Ответ

1 голос
/ 10 июня 2019

Итак, я понял, что проблема в моей неопытности / невежестве.Когда я искал решения в Интернете, я не мог с полной уверенностью понять, что делает код, который я пытаюсь реализовать.Я использовал цикл for.each, чтобы утверждать элементы в массиве относительно моего ожидаемого значения.Что, конечно, не удавалось, правильно, для каждого элемента, который не соответствовал моему ожидаемому значению.Поэтому я заставил его работать, добавив оператор if, как показано ниже:

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")

Iпонимаю, что есть лучшие решения для достижения того, что я пытаюсь сделать.Но для целей этого вопроса я решил, что он решен.

...