Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.stream.StreamSupport;
- import org.w3c.dom.Node;
- import org.xmlunit.builder.DiffBuilder;
- import org.xmlunit.builder.Input;
- import org.xmlunit.diff.Diff;
- import org.junit.Test;
- import static org.junit.Assert.assertEquals;
- public class XmlUnitTest {
- @Test
- public void testForDifferences() {
- String control = "<Parent>\n" +
- " <Costum>\n" +
- " <Work>\n" +
- " <Person>\n" +
- " <FirstName>John</FirstName>\n" +
- " <LastName>Doe</LastName>\n" +
- " <Email>johndoe@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>Mickey</FirstName>\n" +
- " <LastName>Mouse</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>HO</FirstName>\n" +
- " <LastName>FRT</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " </Work>\n" +
- " </Costum>\n" +
- "</Parent>";
- String test = "<Parent>\n" +
- " <Costum>\n" +
- " <Work>\n" +
- " <Person>\n" +
- " <FirstName>John</FirstName>\n" +
- " <LastName>Doe</LastName>\n" +
- " <Email>johndoe@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>HO</FirstName>\n" +
- " <LastName>FRT</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " <Person>\n" +
- " <FirstName>Mickey</FirstName>\n" +
- " <LastName>Mouse</LastName>\n" +
- " <Email>mm@email.com</Email>\n" +
- " </Person>\n" +
- " </Work>\n" +
- " </Costum>\n" +
- "</Parent>";
- Diff myDiff = DiffBuilder.compare(Input.fromString(control))
- .withTest(Input.fromString(test))
- .ignoreWhitespace()
- .checkForSimilar()
- .build();
- List<String> controlElements = StreamSupport
- .stream(myDiff.getDifferences().spliterator(), false /* parallel */)
- .map(diff -> diff.getComparison().getControlDetails().getTarget())
- .map(node -> describeElement(node))
- .sorted()
- .collect(Collectors.toList());
- List<String> testElements = StreamSupport
- .stream(myDiff.getDifferences().spliterator(), false /* parallel */)
- .map(diff -> diff.getComparison().getTestDetails().getTarget())
- .map(node -> describeElement(node))
- .sorted()
- .collect(Collectors.toList());
- assertEquals("В документе есть различия", controlElements, testElements);
- }
- private static String describeElement(Node node) {
- String value = node.getNodeValue();
- String name = node.getParentNode().getLocalName();
- String parentName = node.getParentNode().getParentNode().getLocalName();
- return new StringBuilder()
- .append(parentName)
- .append('/')
- .append(name)
- .append('/')
- .append(value)
- .toString();
- }
Add Comment
Please, Sign In to add comment