-
xmlunit-assertj can now be used with AssertJ 3.9.1+ as well as 2.9.x. Issue #135.
-
added a new
TypeMatcherto the xmlunit-matchers module that can be used to conveniently translate XPath result strings into numbers or booleans and verify they match type safe assertions. Issue #133 via PR #137. -
fixed the
Automatic-Module-Nameof all modules to be valid Java identifiers. Issue #136.
-
add a new module with AssertJ support. This module requires Java7 at runtime. Issue #117 via PRs #120, #126, #128, and #129 by @krystiankaluzny.
-
The
XPathFactoryused by the XPath related Hamcrest matchers is now configurable. Issue #131 via PRs #132
-
add a new experimental project xmlunit-placeholders which aims to use
${xmlunit.FOO}expressions inside of the control document to allow for a DSL-like approach of defining more complex tests. This initial seed only supports${xmlunit.ignore}which can be used to make XMLUnit ignore the element containing this text. PR #105 by @zheng-wang. -
added
withDocumentBuilderFactorymethods toHasXPathMatcherandEvaluateXPathMatcherto allow explicit configuration of theDocumentBuilderFactoryused. Issue #108. -
the
DocmentBuilderFactoryandTransformerFactoryinstances used by XMLUnit are now configured to not load any external DTDs or parse external entities. They are now configured according to the OWASP recommendations for XML eXternal Entity injection preventions. TheTransformerFactoryused by theorg.xmlunit.transform.Transformationclass is still configured to load external stylesheets, though.For the
legacypackage XXE prevention has to be enabled viaXMLUnit.enableXXEProtectionexplicitly.This is a breaking change and you may need to provide
DocmentBuilderFactoryorTransformerFactoryinstances of your own if you need to load external entities.The
SAXParserFactoryandSchemaFactoryinstances used inside of thevalidationpackage have not been changed as their use is likely to require loading of external DTDs or schemas.Issue #91.
-
the configured
NodeFilteris now applied before comparingDocumentTypenodes.This change breaks backwards compatibility as the old behavior was to ignore
DocumentTypewhen counting the children of theDocumentnode but not when actually comparing theDocumentType. Prior to this change if one document had a document type declaration but the other didn't, aHAS_DOCTYPE_DECLARATIONdifference was detected, this will no longer be the case now. If you want to detect this difference, you need to use a more lenientNodeFilterthanNodeFilters.Default(i.e.NodeFilters.AcceptAll) but then you will see an additionalCHILD_NODELIST_LENGTHdifference.The legacy package has been adapted and will behave as before even when using
NewDifferenceEngine.Issue #116.
-
added a new
SourceimplementationElementContentWhitespaceStrippedSourcewhich is similar toWhitespaceStrippedSourcebut only affects text nodes that solely consist of whitespace and doesn't affect any other text nodes. Also added convenienceignoreElementContentWhitespacemethods toDiffBuilderandCompareMatcher. Issue #119.
-
Made Travis build work with OpenJDK6 again. PR #101 by @PascalSchumacher.
-
CompareMatcher'sdescribeTomethod threw an exception if the comparison yielded no differences. Issue #107.
CommentLessSource,DiffBuilder#ignoreCommentsandCompareMatcher#ignoreCommentsnow all use XSLT version 2.0 stylesheets in order to strip comments. New constructors and methods have been added if you need a different version of XSLT (in particular if you need 1.0 which used to be the default up to XMLUnit 2.4.0). Issue #99.
- made
DefaultComparisonFormattermore subclass friendly. Issue #93.
-
JAXPValidatorandValidationMatchernow accept usingSchemainstances for the schema when validating instance documents. Issue #89. -
updated test dependency to Mockito 2.1.0 PR #87 by @PascalSchumacher.
- The
DocumentBuilderFactoryset onDiffBuilderwasn't used properly whenignoreWhitespaceornormalizeWhitespacehas been set. Issue #86.
-
Input.fromByteArrayandInput.fromStringnow returnSources that can be used multiple times. Issue #84. -
The
DocumentBuilderFactoryused byDOMDifferenceEngineis now configurable. Issue #83.
-
various code style fixes PR #74, PR #75, PR #78, PR #79, PR #80 by @georgekankava.
-
CompareMatcherandValidationMatcherthrewNullPointerExceptions when combined with another failingMatcher. Issue #81.
-
fixed swapped constant assignments in
DifferenceEvaluatorsPR #53 by @cboehme. -
added
CompareMatcher#withNamespaceContextPR #54 by @cboehme. -
DiffBuilder#withNamespaceContextfalsely claimed the map would pass prefixes to URIs rather than the other way around. PR #62 and issue #52 by @mariusneo. -
various code style fixes PR #64, PR #65, PR #67, PR #68, PR #69, PR #70 and PR #71 by @georgekankava.
-
new
hasXPathmatchers that check for the existence of an XPath inside of a piece of XML or verify additional assertions on the XPath's stringified result. PR #63 and PR #66 by @mariusneo. -
added new implementations inside
DifferenceEvaluatorsfor common tasks like changing the outcome for specific differences or ignoring changes inside the XML prolog. -
DiffBuilder.withComparisonFormatternow also fully applies to theDifferences contained within theDiff. Issue #55
- implemented
DiffBuilder.withComparisonFormattermentioned in user guide. Issue #51 - eliminated dead-stores. PR #52 by @georgekankava.
- the
schemaURIinValidatorhas been pushed down toParsingValidatorsince it is only used inside this class. - the mapping of
DifferenceEngine#setNamespaceContexthas been inverted from prefix -> URI to URI -> prefix in order to be consistent with the same concept inXPathEngine. CommentLessSourceuses an XSLT stylesheet internally which lacked the requiredversionattribute. PR #47 by @phbenisc.Comparisonnow also contains the XPath of the parent of the compared nodes or attributes which is most useful in cases of missing nodes/attributes because the XPath on one side isnullin these cases. Issue #48 implemented via PR #50 by @eguib.
- the xmlunit-parent POM no longer uses the deprecated
org.sonatype.oss:oss-parentas its parent. - added new overloads to
XPathEngine - fixed the XPath context used by the
byXPathelement selector so that "." now refers to the current element. Issue #39 ElementSelectors#conditionalBuildernow stops at the first predicate returningtrue, even if the associatedElementSelectorreturns false. Issue #40
This is the initial alpha release of XMLUnit.NET. We expect the API to change for the next release based on user feedback.