gpt4 book ai didi

java - 断言以随机顺序输出的两个 JSON 结果

转载 作者:行者123 更新时间:2023-12-01 09:27:02 32 4
gpt4 key购买 nike

在单元测试时,我需要断言两个 JSON 结果,以随机顺序填充 map 。

两个 JSON 具有相同的架构,但大多数内容有所不同。

这些来自 Kafka 流(测试时为 JavaPairDStream),从 tuple2 中提取,然后从 JSON 字符串转换 使用 Jackson ObjectMapper 进行映射。我正在使用 queueStream,但奇怪的是,在使用 Spark 工作流程进行测试时,顺序是随机的。

编辑:我决定使用List,因为集合可能会改变顺序...

这是Java代码:

//Create a list to store maps
List<Map<String, Object>> list = new ArrayList<>();
list.add(map1);
list.add(map2);

//Traverse each map in list and apply correct assertions
for (Map<String, Object> map : list) {
//if Event is "Event1", assertions for "Event1" Event
if (map.get("Event").toString().equals("Event1")) {
Assert.assertEquals(map.get("Event").toString(), "Event1");
more assertions go here...
} else {
//if Event is not "Event1", assertions for "Event2" Event
Assert.assertEquals(map.get("Event").toString(), "Event2");
more assertions go here...
}
}

注意:现在效果很好,因为我只处理两个不同的事件。但我想了解如何通过可扩展性来处理这种情况。

最佳答案

尝试 hamcrest 匹配器 containsInAnyOrder 。您可能必须编写自定义匹配器才能使代码可读。

List<Map<String,Object>> myJsonObjectsInRandomOrder;
...
assertThat(myJsonObjectsInRandomOrder, containsInAnyOrder(new CustomMatcher("Event1", ... ), new CustomMatcher("Event2", ... )));

关于java - 断言以随机顺序输出的两个 JSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39752383/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com