public class PlaceholderDifferenceEvaluator extends java.lang.Object implements DifferenceEvaluator
This class and the whole module are considered experimental and any API may change between releases of XMLUnit.
To use it, just add it with DiffBuilder
like below
Diff diff = DiffBuilder.compare(control).withTest(test).withDifferenceEvaluator(new PlaceholderDifferenceEvaluator()).build();
Supported scenarios are demonstrated in the unit tests (PlaceholderDifferenceEvaluatorTest).
Default delimiters for placeholder are ${
and
}
. To use custom delimiters (in regular expression),
create instance with the
PlaceholderDifferenceEvaluator(String
placeholderOpeningDelimiterRegex, String
placeholderClosingDelimiterRegex)
constructor.
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<java.lang.String,PlaceholderHandler> |
KNOWN_HANDLERS |
static java.lang.String |
PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX |
static java.lang.String |
PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX |
private static java.lang.String |
PLACEHOLDER_PREFIX_REGEX |
private java.util.regex.Pattern |
placeholderRegex |
Constructor and Description |
---|
PlaceholderDifferenceEvaluator()
Creates a PlaceholderDifferenceEvaluator with default
delimiters
PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX
and PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX . |
PlaceholderDifferenceEvaluator(java.lang.String placeholderOpeningDelimiterRegex,
java.lang.String placeholderClosingDelimiterRegex)
Creates a PlaceholderDifferenceEvaluator with custom delimiters.
|
public static final java.lang.String PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX
public static final java.lang.String PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX
private static final java.lang.String PLACEHOLDER_PREFIX_REGEX
private static final java.util.Map<java.lang.String,PlaceholderHandler> KNOWN_HANDLERS
private final java.util.regex.Pattern placeholderRegex
public PlaceholderDifferenceEvaluator()
PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX
and PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX
.public PlaceholderDifferenceEvaluator(java.lang.String placeholderOpeningDelimiterRegex, java.lang.String placeholderClosingDelimiterRegex)
placeholderOpeningDelimiterRegex
- regular expression for
the opening delimiter of placeholder, defaults to PLACEHOLDER_DEFAULT_OPENING_DELIMITER_REGEX
if the parameter is null or blankplaceholderClosingDelimiterRegex
- regular expression for
the closing delimiter of placeholder, defaults to PLACEHOLDER_DEFAULT_CLOSING_DELIMITER_REGEX
if the parameter is null or blankpublic ComparisonResult evaluate(Comparison comparison, ComparisonResult outcome)
DifferenceEvaluator
evaluate
in interface DifferenceEvaluator
private boolean isMissingTextNodeDifference(Comparison comparison)
private boolean controlHasOneTextChildAndTestHasNone(Comparison comparison)
private boolean cantFindControlTextChildInTest(Comparison comparison)
private ComparisonResult evaluateMissingTextNodeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome)
private boolean isTextCDATAMismatch(Comparison comparison)
private boolean isTextLikeNode(org.w3c.dom.Node node)
private boolean isMissingAttributeDifference(Comparison comparison)
private ComparisonResult evaluateMissingAttributeConsideringPlaceholders(Comparison comparison, ComparisonResult outcome)
private ComparisonResult evaluateAttributeListLengthConsideringPlaceholders(Comparison comparison, ComparisonResult outcome)
private ComparisonResult evaluateConsideringPlaceholders(java.lang.String controlText, java.lang.String testText, ComparisonResult outcome)
private boolean isKnown(java.lang.String keyword)
private ComparisonResult evaluate(java.lang.String keyword, java.lang.String testText)