Я пытаюсь написать утверждения для проверки итерации массива объектов JSON.Утверждение нескольких пар ключ/значение
Я хочу вернуть каждое значение ключа и использовать его в другом месте в моем приложении.
Например:
@Before
public void setUp() {
jsonStringSingleObject = "[{\"id\": 1, \"name\": \"A green door\", \"price\": \"12.50\"}]";
jsonStringMultipleObjects = "[{\"id\": 1, \"name\": \"A green door\", \"price\": \"12.50\"}, "
+ "{\"id\": 7, \"name\": \"Tesla\", \"price\": \"94.71\"}]";
}
Что я могу затем использовать следующий тест, чтобы проверить ключ ID: Я являюсь итерации, используя старый добрый путь, как я не миллионы данных для перебора (до 100 Максимум).
@Test
public String idExtractor_checksSingleIDValueWhenPassedAnArrayWithIDKey()
throws JSONException {
JSONArray json = new JSONArray(jsonStringSingle);
for (int i = 0; i < json.length(); i++) {
JSONObject objects = json.getJSONObject(i);
String id = objects.getString("id");
assertTrue(id.equals("1"));
System.out.println(id);
}
}
Испытание проходит с единственным объектом, однако, когда я передать jsonStringMultipleObject
, Тест терпит неудачу. мне удалось пройти тест с использованием
assertThat(id, anyOf(containsString("1"), containsString("2")));
Но это не решает основной проблемы. Я хотел бы проверить идентификатор для каждого объекта и вернуть его - что-то вроде
AssertTrue(id.equals("1")); ///test passes
Затем проверьте второй объект
AssertTrue(id.equals("2")); ///test passes
пройденных тестов!
Если первое утверждение терпит неудачу, мне нужно, чтобы весь тест потерпел неудачу. Возможно ли это?
Только в том случае, если первое утверждение не выполнено или если какое-либо утверждение не выполнено? – Seth
@Seth Любое утверждение терпит неудачу из-за второго объекта. –
@NicolasFilotto это не сработает из-за 7 или 1. Второй объект не обязательно должен быть 1. Я не сравниваю объекты. Я просто хочу индивидуально проверить их, чтобы убедиться, что id - это то, что я ожидаю, и верну их. –