[英]Java - HashCode - Equals
我在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並等於或使用比較器,如果不這樣做,則收到的消息是完全正常的。
在這里,您可以設置groupModel
並修改groupModel。
public void setGroupModel(GroupModel groupModel) {
this.groupModel = groupModel;
this.groupModel.add(this); // the modification
}
在測試你比較groupModel
剛創建你從獲得groupModel cellModel.getGroupModel()
而是一個已被修改 ,所以兩個對象是不同的
assertEquals(groupModel, cellModel.getGroupModel());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.