3 回答
TA贡献1812条经验 获得超5个赞
为了满足您的要求,您必须将对象引用的断言与对象内容的断言结合起来。
请注意,关于集合内容的断言不够充分:
assertEquals(model1.values.size(), model2.values.size());
Integer value1 = model1.values.get(0);
Integer value2 = model2.values.get(0);
assertEquals(value1, value2);
仅声明集合的第一个元素显然是不够的,但是如果您首先断言所期望的是克隆集合中的单个元素。事实并非如此。
相反,您应该依靠equals()将equals()set方法应用于元素集的集合的方法。
使用Assert.assertNotSame()断言都Model和Model.values不引用同一个对象。
然后Assert.assertEqual()用来断言Model.values集合在包含元素方面是相等的。
// Create the original value
Model model1 = ...
// Copy the original value into a new object
Model model2 = modelCopier(model1);
// 1) Check that they don't refer the same object
Assert.assertNotSame(model1, model2);
// 2) Check that they don't refer the same object
Assert.assertNotSame(model1.values, model2.values);
// 3) Check that their values properties contain the same values though!
Assert.assertEquals(model1.values, model2.values);
添加回答
举报