Как выполнить модульное тестирование сериализации / десериализации объекта в VB.NET 1.1? - PullRequest
2 голосов
/ 18 ноября 2008

Я ищу пример кода, который предоставляет модульный тест для сериализации и десериализации объекта из потока памяти. Я нашел примеров, использующих C # 2.0 , однако мой текущий проект использует VB.NET 1.1 (не спрашивайте меня, почему ...), поэтому в решении не могут использоваться дженерики. Я также использую инфраструктуру NUnit для модульных тестов.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 12 ноября 2009

NUnit имеет встроенную поддержку для этого, что делает его немного проще:

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

Или для xml:

Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
2 голосов
/ 30 июня 2009

Это шаблон, на котором я остановился:

<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
1 голос
/ 18 ноября 2008

Если все, что вы хотите сделать, это убедиться, что они сериализуемы, то все, что вам нужно сделать, это сделать сериализацию объекта и убедиться, что исключение 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!");
}
0 голосов
/ 18 ноября 2008

Хм ... так вы пытаетесь написать модульный тест для сериализации? Или для потоков? Надеемся, что это уже сделано MS ... но если вы не доверяете или не реализуете что-то самостоятельно ... вы можете просто заполнить объект некоторыми данными, сохранить их, восстановить их и проверить, установлены ли значения полей.

...