2

オブジェクトをメモリストリームからシリアル化および逆シリアル化するための単体テストを提供するサンプルコードを探しています。C#2.0を使用した例を見つけましたが、現在のプロジェクトではVB.NET 1.1を使用しているため(理由は聞かないでください...)、ソリューションではジェネリックを使用できません。また、単体テストにはNUnitフレームワークを使用しています。

ありがとう!

4

4 に答える 4

2

NUnit にはこれに対するサポートが組み込まれているため、かなり簡単になります。

Dim obj As New MySerializableObject()
Assert.That(obj, Is.BinarySerializable)

またはxmlの場合:

Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
于 2009-11-12T17:06:44.787 に答える
2

これは私が落ち着いたパターンです:

<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
于 2009-06-30T14:30:00.460 に答える
1

それらがシリアル化可能であることを確認するだけの場合は、オブジェクトのシリアル化を実行し、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!");
}
于 2008-11-18T17:27:51.173 に答える
0

うーん...シリアル化のための単体テストを書こうとしているのですか?またはストリームの場合?これはMSによってすでに行われていることを願っています...しかし、自分で何かを信頼または実装していない場合は、オブジェクトにデータを入力して保存し、復元して、フィールドの値が設定されているかどうかを確認できます。 ?

于 2008-11-18T17:05:39.407 に答える