我正在尋找示例代碼,它提供了一個單元測試以序列化和反序列化來自內存流的對象。我發現examples using C# 2.0,但是我目前的項目使用VB.NET 1.1(不問我爲什麼......),所以解決方案不能使用泛型。我也在使用NUnit框架進行單元測試。如何在VB.NET 1.1中測試對象序列化/反序列化?
謝謝!
我正在尋找示例代碼,它提供了一個單元測試以序列化和反序列化來自內存流的對象。我發現examples using C# 2.0,但是我目前的項目使用VB.NET 1.1(不問我爲什麼......),所以解決方案不能使用泛型。我也在使用NUnit框架進行單元測試。如何在VB.NET 1.1中測試對象序列化/反序列化?
謝謝!
這是模式我在支付:
<Test()> _
Public Sub SerializationTest()
Dim obj As New MySerializableObject()
'Perform additional construction as necessary
Dim obj2 As MySerializableObject
Dim formatter As New BinaryFormatter
Dim memoryStream As New MemoryStream()
'Run through serialization process
formatter.Serialize(memoryStream, obj)
memoryStream.Seek(0, SeekOrigin.Begin)
obj2 = DirectCast(formatter.Deserialize(memoryStream), MySerializableObject)
'Test for equality using Assert methods
Assert.AreEqual(obj.Property1, obj.Property1)
'etc...
End Sub
嗯...所以你試圖編寫一個單元測試的序列化?還是爲了流?這可能已經由MS完成了......但是如果你不信任或自己實現某個東西......你可以用一些數據填充對象,保存它,恢復它,並檢查字段值是否到位?
如果你想要做的是,以確保它們是可序列化然後你應該做它做一個對象的序列化,並確保沒有XmlSerializationException被拋出
[Test]
public void ClassIsXmlSerializable()
{
bool exceptionWasThrown = false;
try
{
// .. serialize object
}
catch(XmlSerializationException ex)
{
exceptionWasThrown = true;
}
Asset.IsFalse(exceptionWasThrown, "An XmlSerializationException was thrown. The type xx is not xml serializable!");
}
對不起,沒有看到你使用VB.NET ..讓我知道你是否想讓我把它翻譯成VB.NET爲你 – TheCodeJunkie 2008-11-18 17:28:23
沒有必要,我可以閱讀C#舒適。然而,我遇到了一些VB.NET和C#在某些特性方面不盡相同的實例(比如在使用[field:NonSerialized]屬性聲明時,VB.NET似乎不支持)。 – Technobabble 2008-11-18 17:36:56
如果這是你的問題的解決方案,那麼請把它作爲答案 – TheCodeJunkie 2008-11-18 18:57:59
的NUnit已經內置支持此這使得它很容易一點:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.BinarySerializable)
或爲XML:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
這裏基本上是我想要做的,但在VB.NET 1.1: http://stackoverflow.com/questions/236599/how-to-unit- test-if-my-object-is-really-serializablable – Technobabble 2008-11-18 17:15:43