2017-08-04 36 views
0

我有三个类 - ConvertToXMLElement,ConvertToClass,SerialisableClass在单元测试中验证xml结果?

ConvertToXMLElement具有这样的功能,其发生在SerialisableClass的一个实例,并返回表示类值的的XmlElement,ConvertToClass具有这样的功能,其需要在一个的XmlElement并返回一个SerialisableClass。

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

现在我可以想象做到这一点的唯一方法是让ConvertToClass尝试将XmlElement转换为类。

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

+0

你必须伪造你依赖的类来返回你需要的结果。这样,您可以测试您的“XmlElement”类,而无需实际运行ConvertToClass中的代码。 –

+0

什么应用程序将使用您生成的XML文件?如果您可以使用消费应用程序使用的slurper-parser编写测试,那将是理想的选择。另一种选择是序列化固定数据并将结果与​​固定的已知良好的XML文件进行比较。显然需要更多的维护......最后,不要害怕序列化,然后使用你的类进行反序列化。它是一个好主意......只要你有其他测试来支持对称测试。 –

回答

1

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

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

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

当然,即使不是严格必要的,也可以将两者分开,但这通常是更多的工作。