2016-11-14 2 views
0

Я пытаюсь написать утверждения для проверки итерации массива объектов 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 

пройденных тестов!

Если первое утверждение терпит неудачу, мне нужно, чтобы весь тест потерпел неудачу. Возможно ли это?

+0

Только в том случае, если первое утверждение не выполнено или если какое-либо утверждение не выполнено? – Seth

+0

@Seth Любое утверждение терпит неудачу из-за второго объекта. –

+0

@NicolasFilotto это не сработает из-за 7 или 1. Второй объект не обязательно должен быть 1. Я не сравниваю объекты. Я просто хочу индивидуально проверить их, чтобы убедиться, что id - это то, что я ожидаю, и верну их. –

ответ

0

Возможно, ваша проблема связана с использованием строковой конструкции в JSONArray? См. Этот вопрос/ответ: Convert string to JSON array

Смежные вопросы