gpt4 book ai didi

java - 如何为对象列表中的对象创建测试用例断言?

转载 作者:行者123 更新时间:2023-12-02 03:17:34 24 4
gpt4 key购买 nike

我有 2 个 JSON 文件。两者具有相同的结构,包含对象列表。我必须使用断言来检查两个 JSON 文件的对象中的键是否相等。每个属性都映射到 Java 类中的一个变量。

对于其他键,可能只是对象/变量,检查assertEquals很简单,但是当涉及到对象列表时,我找不到方法。

第一个 JSON 文件

    "cars":[
{
"name" : Camry,
"make" : Toyota
},
{
"name" : Maruti 800,
"make" : Maruti Suzuki
}
]

第二个 Json 文件

    "cars":[
{
"name" : Mustang,
"make" : Coupe
},
{
"name" : Maruti 800,
"make" : Maruti Suzuki
}
]

读取属性、名称和品牌并将其存储在名为 CarDetails 的类中。属性“cars”存储在 MasterCar 类中。我必须将第一个 JSON 文件中的“汽车”列表与第二个文件中的列表“汽车”进行比较。在上面的示例代码中,我需要能够为 JSON 文件中的每个属性创建断言。例如,assertEquals(file1.cars[0].name,file2.cars[0].name)。我可以手动执行此操作,但例如,如果列表包含 50 个对象,则为每个属性的多个对象手动创建断言将非常繁琐。我想知道是否可以迭代列表并为列表中的每个对象独立创建断言。

最佳答案

在我看来,每个 json 文件代表一个汽车列表......我只需将文件反序列化为一个列表。您引用“键”,但没有定义什么是键。在java中,对象可以重写equals()来定义它自己的相等性。还可以定义hashcode()即

    public class Car(){
private String model;
private String make;
public Car(String make; String model) {
this.model = model;
this.make = make;
}
@Override
public boolean equals(Obj obj){

return obj instance of Car.class &&
make.equals(((Car)obj).getMake())
&& model.equals(((Car)obj).getModel())
}
//override hashcode as well
//define getters

}

然后你基本上可以迭代每个列表并检查列表 1 中的每个列表是否包含在列表 2 中。即使用 List.contains(obj)

您可以在此处阅读有关重写 equals 和 hashcode 的更多信息。 https://www.mkyong.com/java/java-how-to-overrides-equals-and-hashcode/

关于java - 如何为对象列表中的对象创建测试用例断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952219/

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