【发布时间】:2018-08-01 13:42:32
【问题描述】:
我编写了以下 JUnit 测试,但它失败了,因为我的测试是比较对象引用而不是对象值:
public class ListSerializerTest {
private InputStream iStream;
private ByteArrayOutputStream oStream;
@Before
public void init() {
oStream = new ByteArrayOutputStream();
}
List<Position> serialzeAndDeserializeObject(List<Position> positionList) {
Stream<Position> positionListStream = positionList.stream();
OutputStreamUtil.<Position> serializeObjectsFromStream(positionList.size(), positionListStream,
oStream, PositionSerializer::serialize);
iStream = new ByteArrayInputStream(oStream.toByteArray());
List<Position> deserializedPositionList = new ArrayList<>();
Consumer<Position> PositionListConsumer = position -> deserializedPositionList.add(position);
InputStreamUtil.<Position> deserializeObjectsToConsumer(iStream, PositionListConsumer,
PositionSerializer::deserialize);
return deserializedPositionList;
}
@Test
public void Equals_equal() {
List<Position> positionList = new ArrayList<Position>();
for (int i = 0; i < 10; i++) {
double x = Math.random();
double y = Math.random();
Position positionObject = new Position(x, y);
positionList.add(positionObject);
}
List<Position> deserializedPositionList = serialzeAndDeserializeObject(positionList);
assertThat(deserializedPositionList).isEqualTo(positionList);
}
}
如何让它比较对象值而不是对象引用?
【问题讨论】: