gpt4 book ai didi

Java - HashCode - 等于

转载 作者:行者123 更新时间:2023-12-02 04:10:26 27 4
gpt4 key购买 nike

我在 Java 中进行单元测试时遇到问题。

我把我的代码和错误放在这里。在互联网上我发现这是哈希码的问题。我需要重新创建它们,但我不知道为什么以及如何。

我的方法:

public void setGroupModel(GroupModel groupModel) {
this.groupModel = groupModel;
this.groupModel.add(this);
}

cellControler 文件:

public class CellController {

public void click(CellModel cellModel, HexModel hexModel)
{
GroupModel groupModel = new GroupModel();
cellModel.setGroupModel(groupModel);
hexModel.getGridContentModel().getArrayListGroupModel().add(groupModel);
}
}

我的单元测试:

public class CellControllerTest {
protected CellController cellController;
@Before
public void setUp() throws Exception {
cellController = new CellController();
}

@After
public void tearDown() throws Exception{
}

@Test
public void testClick() throws Exception{
GroupModel groupModel = new GroupModel();
CellModel cellModel = new CellModel();
HexModel hexModel = new HexModel(); // hexModel has an attribute : gridContentModel
cellController.click(cellModel, hexModel);
assertEquals(groupModel, cellModel.getGroupModel());
}
}

我的错误

java.lang.AssertionError: expected:<model.GroupModel@6d5380c2> but was:<model.GroupModel@45ff54e6>

我认为问题是:this.groupModel = groupModel;

我必须写什么以及为什么? :)

最佳答案

比较很容易,您需要覆盖 hashCode 和 equals 或使用比较器,如果您没有这样做,那么您收到的消息是完全正常的。

在这里设置groupModel并修改groupModel。

public void setGroupModel(GroupModel groupModel) {
this.groupModel = groupModel;
this.groupModel.add(this); // the modification
}

在测试中,您将刚刚创建的 groupModel 与从 cellModel.getGroupModel() 获取的 groupModel 进行比较,但该 groupModel 已被修改,所以两个对象不同

    assertEquals(groupModel, cellModel.getGroupModel());

关于Java - HashCode - 等于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33846590/

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