كيف يمكنني حدة الكائن اختبار التسلسل / إلغاء التسلسل في VB.NET 1.1؟
-
08-07-2019 - |
سؤال
وأنا أبحث عن مثال التعليمة البرمجية التي توفر وحدة الاختبار إلى تسلسل وإلغاء تسلسل كائن من دفق الذاكرة. لقد وجدت أمثلة href="https://stackoverflow.com/questions/236599/how-to-unit-test-if-my-object-is-really-serializablable"> ، لكن مشروعي الحالي يستخدم VB.NET 1.1 (لا تسألني لماذا ...)، وبالتالي فإن الحل لا يمكن استخدام الأدوية. أنا أيضا باستخدام إطار NUnit للاختبارات وحدة.
وشكرا!
المحلول
وهذا هو النمط I قد استقر على ما يلي:
<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
نصائح أخرى
وNUnit في دعم هذا مما يجعله لا بأس به أسهل:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.BinarySerializable)
وأو لXML:
Dim obj As New MySerializableObject()
Assert.That(obj, Is.XmlSerializable)
وإذا كان كل ما تريد القيام به هو ضمان أن تكون للتسلسل ثم كل ما يجب عليك القيام به هو القيام التسلسل كائن وتأكد ألقيت لا 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!");
}
وهم ... لذلك تحاول لكتابة اختبار وحدة لالتسلسل؟ أو لتيارات؟ ويتم ذلك نأمل من خلال MS بالفعل ... ولكن إذا كنت لا تثق أو تنفيذ شيء بنفسك ... هل يمكن أن مجرد ملء الكائن مع بعض البيانات، حفظه، استعادته، ومعرفة ما اذا قيم الحقول في مكان