我有一个类序列化了一组我想进行单元测试的对象(使用 XML 序列化)。
我的问题是感觉我将测试 XML 序列化的 .NET 实现,而不是任何有用的东西。我还有一个先有鸡还是先有蛋的小场景,为了测试 Reader,我需要 Writer 生成的文件来执行此操作。
我认为我最终要寻求反馈的问题(有 3 个,但它们都相关)是:
- 是否可以在不使用读取器的情况下测试写入器?
- 测试阅读器的最佳策略是什么(XML 文件?模拟记录/回放)?是不是您真正要做的只是测试已反序列化的对象的属性值?
- 测试作者的最佳策略是什么!
Xml 序列化的背景信息
我没有使用架构,因此所有 XML 元素和属性都与对象的属性相匹配。由于没有架构,与每个对象的属性中发现的标签/属性不匹配的标签/属性将被 XmlSerializer 简单地忽略(因此属性的值为 null 或默认值)。这是一个例子
<MyObject Height="300">
<Name>Bob</Name>
<Age>20</Age>
<MyObject>
将映射到
public class MyObject
{
public string Name { get;set; }
public int Age { get;set; }
[XmlAttribute]
public int Height { get;set; }
}
反之亦然。如果对象更改为以下内容,XML 仍会成功反序列化,但 FirstName 将为空。
public class MyObject
{
public string FirstName { get;set; }
public int Age { get;set; }
[XmlAttribute]
public int Height { get;set; }
}
无效的 XML 文件会正确反序列化,因此单元测试会通过,除非您对 MyObject 的值运行断言。
最佳答案
你需要能够做到向后兼容吗?如果是这样,可能值得对旧版本生成的文件进行单元测试,这些文件应该仍然能够被新版本反序列化。
除此之外,如果您曾经介绍过任何“有趣”的东西,它可能值得进行单元测试来检查您是否可以序列化和反序列化,只是为了确保您没有用只读属性等
关于c# - 单元测试序列化有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1102614/