Pregunta

Estoy buscando un código de ejemplo que proporcione una prueba unitaria para serializar y deserializar un objeto de un flujo de memoria. He encontrado ejemplos usando C # 2.0 , sin embargo, mi proyecto actual usa VB.NET 1.1 (no me pregunte por qué ...), por lo que la solución no puede usar genéricos. También estoy usando el marco NUnit para las pruebas unitarias.

¡Gracias!

¿Fue útil?

Solución

Este es el patrón en el que me decidí:

<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

Otros consejos

NUnit ha incorporado soporte para esto, lo que lo hace un poco más fácil:

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

O para xml:

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

Si todo lo que quiere hacer es asegurarse de que sean serializables, entonces todo lo que debe hacer para serializar un objeto y asegurarse de que no se haya lanzado 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!");
}

Hmm ... ¿entonces estás intentando escribir una prueba unitaria para serialización? O para las corrientes? Es de esperar que MS ya lo haya hecho ... pero si no confía o implementa algo por su cuenta ... simplemente puede llenar el objeto con algunos datos, guardarlo, restaurarlo y verificar si los valores de los campos están en su lugar ?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top