Ich habe einige Komponententests, bei denen ich sicherstellen muss, dass von einer Methode generiertes XML die gleichen Elemente / Werte wie ein erwartetes Xml-Dokument enthält.
Ich habe xmlunit in Java verwendet, und obwohl sie eine .net-Version haben, scheint sie keine Namespaces zu unterstützen. Gibt es dafür Alternativen in .net?
Solange ich nur 2 Xml-Strings vergleichen kann und ein True / False-Ergebnis bekomme, um mir zu sagen, ob sie übereinstimmen, soweit die Daten betroffen sind, bin ich glücklich ...
Normalerweise habe ich XNode.DeepEquals gefunden ist ausreichend für meine Bedürfnisse. Es ist Teil der BCL, daher ist kein Download erforderlich.
Was Sie bei MSXML XMLDiff beachten sollten, ist Folgendes: Wenn Sie sehr große XML-Dokumente vergleichen, stellen Sie sicher, dass Ihr XMLDiff.Algorithm
nicht auf "Precise" eingestellt ist oder dass Ihnen möglicherweise nicht genügend Arbeitsspeicher zur Verfügung steht. Standardmäßig ist dies auf "Auto" eingestellt, was eine sichere Wahl ist, da die API basierend auf der Dateigröße, der Anzahl der erkannten Unterschiede und anderen Faktoren entscheidet, ob Precise oder Fast verwendet werden soll. Hier ist eine gute Lektüre für die eher technisch veranlagten:
Ich habe die XMLDiff von MS benutzt, aber ich bevorzuge die Verwendung von Beyond Compare 3's, da es eine bessere GUI und Batch-Verarbeitung bietet (doesst aber .NET API).
Für Ihre Tests verwenden Sie XNode.DeepEquals oder InnerXML, um die zeichenkettenbasierte Darstellung zu vergleichen
Tags und Links .net unit-testing xml nunit xmlunit