Vra

Ek is op soek byvoorbeeld kode wat 'n eenheid toets om afleveringen en deserialize 'n voorwerp van 'n geheue stroom verskaf. Ek het voorbeelde gebruik te maak van C # 2,0 gevind, egter my huidige projek gebruik VB.NET 1.1 (moenie vir my vra hoekom ...), so die oplossing nie generiese kan gebruik. Ek is ook met behulp van die NUnit raamwerk vir die eenheid toetse.

Dankie!

Was dit nuttig?

Oplossing

Dit is die patroon wat ek gevestig op:

<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

Ander wenke

NUnit het ingeboude ondersteuning vir hierdie wat maak dit nogal 'n bietjie makliker:

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

Of vir xml:

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

As alles wat jy wil doen, is om seker te maak dat hulle serialiseerbaar dan al wat jy moet hê om dit te doen om 'n serialisasie van 'n voorwerp doen en maak seker geen XmlSerializationException gegooi

[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 ... so jy probeer om 'n eenheid toets vir serialisasie skryf? Of vir strome? Dit is hopelik deur MS reeds ... maar as jy nie vertrou of iets op jou eie te implementeer ... jy kan net vul voorwerp met 'n paar data, stoor dit, herstel dit, en kyk of die velde waardes in plek ?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top