2014-07-08 18 views
1

Android使用什麼序列化器在Bundle.putSerializable後面使用?Android在Bundle.putSerializable後面使用了什麼序列化程序?

我想知道的原因是我想寫一個單元測試,檢查我的類是否實際序列化成功。它實施java.io.Serializable不能保證。

編輯:我想我可以改寫我的問題「我怎麼序列化對象實現Serializable接口,在單元測試與Robolectric下的Java運行JUnit」

+0

每一個實現了串行化的接口 – Blackbelt

+0

即'java.io.Serializable'對象。 –

回答

0

我假設它使用標準Java Serialization。要模擬,請調用writeObject-方法ObjectOutputStream並將可序列化的對象作爲輸入。然後用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); 
} 
相關問題