【发布时间】:2017-07-26 14:08:04
【问题描述】:
我正在尝试使用 JUnit 编写单元测试,我想使用 AssertsEqual 测试一个函数,其中我有两个 JsonObjects 列表。下面是我的实际和预期的 json 字符串。
String jsonOutput = [ {
id: 1,
name: abc,
age: 23
},
{
id: 2,
name: efg,
age: 26
},
{
id: 3,
name: rst,
age: 26
}
]
String jsonExpected = [ {
id: 2,
name: efg,
age: 26
},
{
id: 1,
age: 23,
name: abc
},
{
id: 3,
name: rst,
age: 26
}
]
在上面的示例中,可以看出,预期字符串的对象顺序发生了变化,并且各个字段的顺序也在各个对象内发生了变化。
请在下面找到我的测试用例:
@Test
public void testApply() {
Command command = new Command();
Logger logger = LoggerFactory.getLogger(Command.class.getName());
command.set(logger, new JsonObject());
command.apply(Buffer.buffer(TestConstants.ALL_GAPS));
Object eventList = command.apply(Buffer.buffer(TestConstants.OCCUPIED_GAPS)); // returns a list of json objects
List<JsonObject> expectedList = createExpectedEventList(TestConstants.EVENT_LIST);
Assert.assertEquals(expectedList, eventList);
}
private List<JsonObject> createExpectedEventList(String eventListString) {
JsonArray eventArray = new JsonArray(eventListString);
List<JsonObject> eventList = new ArrayList<>();
for (Object obj : eventArray) {
eventList.add((JsonObject) obj);
}
return eventList;
}
Assert.assertEquals(expectedList, eventList);
即使提供相同的字符串更改顺序,上述函数也会返回 false。如果字符串的内容无论顺序如何都相同,我希望此函数返回 true。
【问题讨论】:
-
到目前为止你尝试了什么?请给我们一些代码
-
添加了单元测试用例。
-
虽然我了解您在此处尝试执行的操作,但我担心您遗漏了一条非常重要的信息。排序不同的 Json 数组是 not 相等的。