オブジェクトをメモリストリームからシリアル化および逆シリアル化するための単体テストを提供するサンプルコードを探しています。C#2.0を使用した例を見つけましたが、現在のプロジェクトではVB.NET 1.1を使用しているため(理由は聞かないでください...)、ソリューションではジェネリックを使用できません。また、単体テストにはNUnitフレームワークを使用しています。
ありがとう!
オブジェクトをメモリストリームからシリアル化および逆シリアル化するための単体テストを提供するサンプルコードを探しています。C#2.0を使用した例を見つけましたが、現在のプロジェクトではVB.NET 1.1を使用しているため(理由は聞かないでください...)、ソリューションではジェネリックを使用できません。また、単体テストにはNUnitフレームワークを使用しています。
ありがとう!
NUnit にはこれに対するサポートが組み込まれているため、かなり簡単になります。
Dim obj As New MySerializableObject()
Assert.That(obj, Is.BinarySerializable)
またはxmlの場合:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
これは私が落ち着いたパターンです:
<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
それらがシリアル化可能であることを確認するだけの場合は、オブジェクトのシリアル化を実行し、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!");
}
うーん...シリアル化のための単体テストを書こうとしているのですか?またはストリームの場合?これはMSによってすでに行われていることを願っています...しかし、自分で何かを信頼または実装していない場合は、オブジェクトにデータを入力して保存し、復元して、フィールドの値が設定されているかどうかを確認できます。 ?