Given I have Audit
class:
public class Audit implements DataSerializable {
private String createdBy = "me";
private LocalDateTime createdTimestamp = LocalDateTime.now();
private String modifiedBy;
private LocalDateTime modifiedTimestamp;
@Override
public void writeData(ObjectDataOutput out) throws IOException {
out.writeUTF(getCreatedBy());
out.writeObject(getCreatedTimestamp());
out.writeUTF(getModifiedBy());
out.writeObject(getModifiedTimestamp());
}
@Override
public void readData(ObjectDataInput in) throws IOException {
setCreatedBy(in.readUTF());
setCreatedTimestamp(in.readObject());
setModifiedBy(in.readUTF());
setModifiedTimestamp(in.readObject());
}
}
I'd like to write unit test which tests serialization and deserialization.
Implementations of ObjectDataOutput
and ObjectDataInput
are either package private or they require to provide components from Hazelcast API.
How can I create such test?
You can clone the object using SerializationService
and test equality
SerializationService serializationService = new DefaultSerializationServiceBuilder().build();
Audit expected = new Audit(...);
Audit actual = serializationService.toObject(serializationService.toData(expected);
assertEquals(expected, actual);