在Bundle.putSerializable后面使用Android的串行器是什么?
我想知道的原因是我想编写一个单元测试来检查我的类是否实际成功序列化。实施java.io.Serializable
并不能保证这一点。
编辑:我想我可以将我的问题改为"如何在使用Robolectric"
的Java下运行Junit的单元测试中序列化实现Serializable接口的Object答案 0 :(得分:0)
我假设它使用标准Java Serialization。要进行模拟,请使用可序列化对象作为输入在ObjectOutputStream
上调用writeObject - 方法。然后使用readObject()
反序列化并检查结果。
示例代码:
class SomeSerializableObject implements Serializable {
public String SomeProperty;
}
@Test
public void SomeSerializableObject_IsSerializable() throws IOException, ClassNotFoundException {
// Setup
SomeSerializableObject obj = new SomeSerializableObject();
obj.SomeProperty = "Hi!";
ByteArrayOutputStream bo = new ByteArrayOutputStream(10000);
ObjectOutputStream os = new ObjectOutputStream(bo);
// Act
os.writeObject(obj);
// Assert
byte[] raw = bo.toByteArray();
ObjectInputStream is = new ObjectInputStream(new ByteArrayInputStream(raw));
SomeSerializableObject result = (SomeSerializableObject) is.readObject();
assertEquals("Hi!", result.SomeProperty);
}