2016-10-06 17 views
0

私はApprovals.Verify xmlにしようとしていますが、問題は属性の順序です。いくつかの要素で、彼らは私のコンピュータとジェンキンズの順番が異なります。他questionからクラスのプロパティの順序を変更することが判明しました。それはちょっと働いた:それは属性の順序を変えたが、今はジェンキンスの命令はそれが私のコンピュータにあったものであり、逆もまた同様である。だからクラスのプロパティの順序を変更して助けてくれません。xmlとApprovalTestsを比較するときの属性の順序を無視する

ApprovalTestsを使用してxml属性の順序を無視する方法はありますか?または、XML直列化の属性の正確な順序をどうすればいいですか?または他のヒント?

+0

あなたはジェンキンスと彼のアトリビュートをスクランブルしないことについて静かではあるが非常に激しい議論が必要なように聞こえます。実際、ジェンキン自身を静かに処分するのがあなたの最善の選択肢かもしれません。しかし、問題を再現するのに十分なコードを提供できれば、それはあなたの問題に対処する別の方法かもしれません。 –

+0

[XML標準セクション3.1](https://www.w3.org/TR/REC-xml/#sec-starttags)によると、**開始タグまたは空要素タグ内の属性指定の順序** ApprovalTestsが属性の順序を無視していない場合、それはApprovalTestsのバグです。比較['XNode.DeepEquals()'](https://msdn.microsoft.com/en-us/library/system.xml.linq.xnode.deepequals(v = vs.110).aspx)では、属性の順序が無視されますだから多分あなたはそれを使うことができます。 – dbc

+0

[参照元](https://github.com/approvals/ApprovalTests.Net)からは、['XmlApprovals.VerifyOrderedXml()'](https://github.com/approvals/ApprovalTests)が表示されます。 .Net/blob/master/ApprovalTests/Xml/XmlApprovals.cs)は、属性の順序を正規化しようとします。これはあなたが使っている方法ですか?そうでない場合は、[mcve]を提供できますか? – dbc

答えて

2

XML標準セクション3.1によると、は、開始タグまたは空要素タグ内の属性指定の順序は重要ではありません。したがって、XML属性の変更は単体テストの失敗を引き起こすべきではありません。

reference sourceから、XmlApprovals.VerifyOrderedXml()というメソッドは、内部的にすべての属性を再帰的に並べ替える内部呼び出しによって、検証前に属性の順序を正規化しているようです。したがって、この方法はあなたのニーズを満たす必要があります。

関連する問題