【发布时间】:2016-10-06 20:17:52
【问题描述】:
我正在尝试 Approvals.Verify xml,但问题是属性的顺序。在少数元素中,它们在我的计算机和 Jenkins 中的顺序不同。从其他question 我发现更改类中属性的顺序。这有点奏效:它改变了属性的顺序,但现在詹金斯的顺序是它曾经在我的计算机中的顺序,反之亦然。因此,更改属性在类中的顺序没有帮助。
有没有办法使用 ApprovalTests 来忽略 xml 属性的顺序?或者我怎么能说出 xml 序列化中属性的确切顺序?还是其他提示?
【问题讨论】:
-
听起来你需要和 Jenkins 进行一次安静但非常激烈的讨论,不要扰乱他的属性。事实上,悄悄地处理掉詹金斯本人可能是你最好的选择。但是,如果您可以提供足够的代码来重现该问题,那可能是解决您的问题的另一种方法。
-
根据XML Standard Section 3.1,开始标签或空元素标签中属性规范的顺序并不重要。 所以如果 ApprovalTests 没有忽略属性顺序,那么这是 ApprovalTests 中的一个错误。为了比较
XNode.DeepEquals()忽略属性顺序,所以也许你可以使用它。 -
话虽如此,从reference source 看来,
XmlApprovals.VerifyOrderedXml()试图规范化属性的顺序。这是您使用的方法吗?如果没有,你能提供一个minimal reproducible example吗?
标签: c# xml xmlserializer approval-tests