如何在C#中对类的序列化和反序列化执行单元测试?

时间:2017-03-31 19:57:57

标签: c# unit-testing serialization nunit

我想对一个类执行NUnit或MS测试以进行序列化和反序列化的行为。

我查看了另一篇stackoverflow文章here,但我仍然不明白该怎么做。请帮助我了解如何执行这些测试,

以下是我的代码部分:

namespace PMT.Service.Common.DataContract
{
    public partial class MyBankInfo
    {
        public string MyId { get; set; }
        public string MyAccountNumber { get; set; }
        public string MyAccountType { get; set; }
        public string MyBankName { get; set; }
        public string MyBankBranchName { get; set; }
        public string MyBankCity { get; set; }
        public string MyBankCityPincode { get; set; }
        public string MyBankIFSCCode { get; set; }

        public void Serialize(BinaryStreamWriter binaryStreamWriter)
        {           
            binaryStreamWriter.Write(MyId);
            binaryStreamWriter.Write(MyAccountNumber);
            binaryStreamWriter.Write(MyAccountType);
            binaryStreamWriter.Write(MyBankName);
            binaryStreamWriter.Write(MyBankBranchName);
            binaryStreamWriter.Write(MyBankCity);
            binaryStreamWriter.Write(MyBankCityPincode);
            binaryStreamWriter.Write(MyBankIFSCCode);
        }

        public bool Deserialize(BinaryStreamReader binaryStreamReader,out   string errorString)
        {
            errorString = string.Empty;
            try
            {
                MyId = binaryStreamReader.ReadString();
                MyAccountNumber = binaryStreamReader.ReadString();
                MyAccountType = binaryStreamReader.ReadString();
                MyBankName = binaryStreamReader.ReadString();
                MyBankBranchName = binaryStreamReader.ReadString();
                MyBankCity = binaryStreamReader.ReadString();
                MyBankCityPincode = binaryStreamReader.ReadString();
                MyBankIFSCCode = binaryStreamReader.ReadString();

            }
            catch (Exception ex)
            {
                errorString = ex.Message;
            }
            return string.IsNullOrEmpty(errorString);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

有两种方法可以测试序列化和反序列化:单独或两者一起测试。

如果序列化数据由您无法控制的其他软件创建或使用,则单独测试最佳。在这种情况下,必须验证确切的格式。这也是艰难的方式。

如果您的数据仅由您自己的班级序列化和反序列化,那么您可以同时测试两者:

  1. 创建测试对象
  2. 在内存中创建Writer或在磁盘上备份。
  3. 序列化为该作家。
  4. 创建第二个对象并从保存的数据中反序列化。
  5. 编写一堆断言,将原始对象的属性与新对象的属性进行比较。