在将xml与ApprovalTests进行比较时忽略属性的顺序

时间:2016-10-06 20:17:53

标签: c# xml xmlserializer approval-tests

我正在尝试Approvals.Verify xml,但问题是属性的顺序。在少数元素中,它们在我的计算机和Jenkins中的顺序不同。从其他question我发现改变了类中属性的顺序。这有点奏效:它改变了属性的顺序,但现在Jenkins的顺序就像以前一样在我的计算机中,反之亦然。所以在课堂上改变了属性的顺序没有帮助。

有没有办法使用ApprovalTests忽略xml属性的顺序?或者如何在xml序列化中说出属性的确切顺序?或其他提示?

1 个答案:

答案 0 :(得分:3)

根据XML标准第3.1节, start-tag或empty-element标记中属性规范的顺序并不重要。因此,XML属性的更改不应触发单元测试失败。

并且,从reference source开始,方法XmlApprovals.VerifyOrderedXml()似乎通过内部调用XmlUtils.FormatXmlWithOrderedAttributes()来递归排序所有属性,从而在验证之前规范化属性的顺序。因此,这种方法应该满足您的需求。