Comment est-ce que je teste la sérialisation / la désérialisation des objets dans VB.NET 1.1?
-
08-07-2019 - |
Question
Je cherche un exemple de code fournissant un test unitaire pour sérialiser et désérialiser un objet à partir d'un flux de mémoire. J'ai trouvé des
La solution C’est le schéma sur lequel je me suis fixé: <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
Autres conseils
NUnit a un support intégré pour cela, ce qui le rend un peu plus facile:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.BinarySerializable)
Ou pour xml:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
Si tout ce que vous voulez faire est de vous assurer qu'ils sont sérialisables, il vous suffira de le faire pour effectuer la sérialisation d'un objet et vous assurer qu'aucune exception XmlSerializationException n'a été levée
[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 ... vous essayez donc d'écrire un test unitaire pour la sérialisation? Ou pour les ruisseaux? Espérons que cela soit déjà fait par MS ... mais si vous ne faites pas confiance à quelque chose ou ne l'implémentez pas ... vous pouvez simplement remplir un objet avec des données, les sauvegarder, les restaurer et vérifier si les valeurs des champs sont en place ?