我正在尝试编写断言来测试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")));
但这并不能解决潜在的问题。 我想检查每个对象的id并返回它 - 类似于
AssertTrue(id.equals("1")); ///test passes
然后检查第二个对象
AssertTrue(id.equals("2")); ///test passes
通过测试!
如果第一个断言失败,我需要整个测试失败。 这有可能吗?