- 
                Notifications
    
You must be signed in to change notification settings  - Fork 8
 
ComparisonFormatter
        Stefan Bodewig edited this page Jan 2, 2016 
        ·
        4 revisions
      
    The (I)ComparisonFormatter formats the differences between control and
test XML in a human readable was as a String.  Normally the default
formatter will be used: org.xmlunit.diff.DefaultComparisonFormatter
or Org.XmlUnit.Diff.DefaultComparisonFormatter
But you can also implement your own formatter. There are two methods to implement:
String getDescription(Comparison difference); // [1]
String getDetails(Detail details, ComparisonType type, boolean formatXml); // [2]in Java, or for .NET:
string GetDescription(Comparison difference); // [1]
string GetDetails(Comparison.Detail details, ComparisonType type, bool formatXml); // [2]- 
getDescription:
should return a short human readable description what the differences are.
Example: Return the String 
"Expected number of attributes '1' but was '2' - comparing <a...> at /a[1] to <a...> at /a[1]" - getDetails(Detail, ComparisonType, boolean): should return the comparison details from the effected Test- or Control-Node. See the next section
 
The default implementation DefaultComparisonFormatter returns the
stringified XML snippet which contains the differences.
For Java this XML snippets are used by the
org.xmlunit.matchers.CompareMatcher to create a
org.junit.ComparisonFailure which can show the differences in your
IDE as a nice Diff-View.
- The 
DetailArgument contains either the details of the Control-Node or the Test-Node. - Depending on the 
ComparisonTypeof the differences the target-node, its parent or the whole document should be returned as XML-Snippet. - The boolean 
formatXmltells if the resulting XML should be formatted or not.
For Example: if the input source was wrapped with a WhitespaceStrippedSource the resulting XML can and should be formatted to be human readable. But if the source was not wrapped by a content modification source, the formatting could remove/hide the real differences between test and control node. 
- Overview
 - General Concepts
 - Comparing XML
 - Validating XML
 - Utilities
 - Migrating from XMLUnit 1.x to 2.x
 - Known Issues