在单元测试中验证xml结果?

时间:2017-08-04 04:12:58

标签: c# xml unit-testing nunit

我有三个类 - ConvertToXMLElement,ConvertToClass,SerialisableClass

ConvertToXMLElement有一个函数,它接受一个SerialisableClass实例并返回一个表示类值的XmlElement,ConvertToClass有一个函数,它接受一个XmlElement并返回一个SerialisableClass。

我试图编写一个单元测试来验证从ConvertToXMLElement返回的XmlElement,以确保可以通过ConvertToClass将XmlElement转换为正确的类。

现在,我能想象的唯一方法是让ConvertToClass尝试将XmlElement转换为类。

但这意味着单元测试中两个类之间存在依赖关系,理想情况下,单元测试在验证此类函数时不必关心另一个类。

2 个答案:

答案 0 :(得分:1)

隔离是单元测试的标准,但测试序列化/反序列化并不是完全不可接受的,IMO。

这取决于谁将使用序列化数据。如果它只在你的两个类中使用,那么它是一个相对安全的快捷方式来一起测试它们。

OTOH,如果数据必须采用某种特殊格式以便其他程序可以使用,那么您绝对需要分别测试这两个阶段。这意味着您将实际检查序列化的XML以确定它是否满足外部要求,并且您将创建XML以用于满足相同标准的测试。

当然,即使不是绝对必要,你也可以将两者分开,但这通常会带来更多的工作。

答案 1 :(得分:0)

您必须隔离代码。您的代码总是具有依赖关系,因此我们的工作就是在进行单元测试时隔离代码。链接您的几个链接,以帮助您了解如何做到这一点。

https://msdn.microsoft.com/en-us/library/hh549174.aspx http://www.c-sharpcorner.com/UploadFile/dacca2/understand-stub-mock-and-fake-in-unit-testing/