我想用JUnit編寫一個單元測試,我想用AssertsEqual來測試一個函數,其中有兩個JsonObjects列表。以下是我的實際和預期的json字符串。比較兩個相同的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,如果字符串的內容是相同的,而不管順序如何。
*你嘗試過什麼到目前爲止*向我們展示一些代碼,請 – Lino
單元測試的情況下加入。 – Salam
雖然我明白你在這裏要做什麼,但我擔心你錯過了一條非常關鍵的信息。有序不同的Json數組是不相等的。 –