【发布时间】:2010-11-09 07:28:59
【问题描述】:
我有一个类可以序列化一组我想要进行单元测试的对象(使用 XML 序列化)。
我的问题是感觉我要测试 XML 序列化的 .NET 实现,而不是任何有用的东西。我也有一个先有鸡还是先有蛋的场景,为了测试 Reader,我需要一个 Writer 生成的文件。
我认为我最终要寻求反馈的问题(有 3 个,但它们都相关)是:
- 是否可以在不使用 Reader 的情况下测试 Writer?
- 测试阅读器的最佳策略是什么(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# unit-testing serialization xml-serialization