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

Ignore attributes' order when comparing xml with ApprovalTests

我正在尝试 Approvals.Verify xml 但问题是属性的顺序。在少数元素中,它们在我的计算机和 Jenkins 中的顺序不同。从其他 question 我发现可以更改 class 中的属性顺序。这有点奏效:它改变了属性的顺序,但现在 Jenkins 的顺序是它以前在我的电脑中的顺序,反之亦然。因此,class.

中更改的属性顺序没有任何帮助

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

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

并且,从递归排序所有属性的reference source, it appears that the method XmlApprovals.VerifyOrderedXml() normalizes the order of attributes before validation by internally calling XmlUtils.FormatXmlWithOrderedAttributes()。所以这个方法应该可以满足你的需求。