当前位置:  开发笔记 > 编程语言 > 正文

如果我的对象真的可序列化,如何进行单元测试?

如何解决《如果我的对象真的可序列化,如何进行单元测试?》经验,为你挑选了3个好方法。

我正在使用C#2.0和Nunit Test.我有一些需要序列化的对象.这些对象非常复杂(在不同级别继承并包含许多对象,事件和委托).

如何创建单元测试以确保我的对象可以安全地序列化?



1> 小智..:

这是一种通用方式:

public static Stream Serialize(object source)
{
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new MemoryStream();
    formatter.Serialize(stream, source);
    return stream;
}

public static T Deserialize(Stream stream)
{
    IFormatter formatter = new BinaryFormatter();
    stream.Position = 0;
    return (T)formatter.Deserialize(stream);
}

public static T Clone(object source)
{
    return Deserialize(Serialize(source));
}



2> Patrick Desj..:

我在这里的一些单元测试中有这个:

MyComplexObject dto = new MyComplexObject();
MemoryStream mem = new MemoryStream();
BinaryFormatter b = new BinaryFormatter();
try
{
    b.Serialize(mem, dto);
}
catch (Exception ex)
{
    Assert.Fail(ex.Message);
}

可能会帮助你...也许其他方法可以更好但是这个方法效果很好.



3> Scott Weinst..:

除了上面的测试 - 确保序列化程序将接受您的对象,您需要进行往返测试.将结果反序列化回新对象,并确保两个实例是等效的.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有