Class XMLAssert

  • All Implemented Interfaces:
    XMLConstants, XSLTConstants

    public class XMLAssert
    extends junit.framework.Assert
    implements XSLTConstants
    Collection of static methods so that XML assertion facilities are available in any class, not just test suites. Thanks to Andrew McCormick and others for suggesting this refactoring.
    Available assertion methods are:
    • assertXMLEqual
      assert that two pieces of XML markup are similar
    • assertXMLNotEqual
      assert that two pieces of XML markup are different
    • assertXMLIdentical
      assert that two pieces of XML markup are identical. In most cases this assertion is too strong and assertXMLEqual is sufficient
    • assertXpathExists
      assert that an XPath expression matches at least one node
    • assertXpathNotExists
      assert that an XPath expression does not match any nodes
    • assertXpathsEqual
      assert that the nodes obtained by executing two Xpaths are similar
    • assertXpathsNotEqual
      assert that the nodes obtained by executing two Xpaths are different
    • assertXpathValuesEqual
      assert that the flattened String obtained by executing two Xpaths are similar
    • assertXpathValuesNotEqual
      assert that the flattened String obtained by executing two Xpaths are different
    • assertXpathEvaluatesTo
      assert that the flattened String obtained by executing an Xpath is a particular value
    • assertXMLValid
      assert that a piece of XML markup is valid with respect to a DTD: either by using the markup's own DTD or a different DTD
    • assertNodeTestPasses
      assert that a piece of XML markup passes a NodeTest
    All underlying similarity and difference testing is done using Diff instances which can be instantiated and evaluated independently of this class.
    See Also:
    Diff.similar(), Diff.identical()
    • Constructor Detail

      • XMLAssert

        protected XMLAssert()
        Empty constructor.
    • Method Detail

      • assertXMLEqual

        public static void assertXMLEqual​(Diff diff,
                                          boolean assertion)
        Assert that the result of an XML comparison is or is not similar.
        Parameters:
        diff - the result of an XML comparison
        assertion - true if asserting that result is similar
      • assertXMLEqual

        public static void assertXMLEqual​(String msg,
                                          Diff diff,
                                          boolean assertion)
        Assert that the result of an XML comparison is or is not similar.
        Parameters:
        msg - additional message to display if assertion fails
        diff - the result of an XML comparison
        assertion - true if asserting that result is similar
      • assertXMLIdentical

        public static void assertXMLIdentical​(Diff diff,
                                              boolean assertion)
        Assert that the result of an XML comparison is or is not identical
        Parameters:
        diff - the result of an XML comparison
        assertion - true if asserting that result is identical
      • assertXMLIdentical

        public static void assertXMLIdentical​(String msg,
                                              Diff diff,
                                              boolean assertion)
        Assert that the result of an XML comparison is or is not identical
        Parameters:
        msg - Message to display if assertion fails
        diff - the result of an XML comparison
        assertion - true if asserting that result is identical
      • assertXMLEqual

        public static void assertXMLEqual​(String control,
                                          String test)
                                   throws SAXException,
                                          IOException
        Assert that two XML documents are similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLEqual

        public static void assertXMLEqual​(Document control,
                                          Document test)
        Assert that two XML documents are similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
      • assertXMLEqual

        public static void assertXMLEqual​(Reader control,
                                          Reader test)
                                   throws SAXException,
                                          IOException
        Assert that two XML documents are similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLEqual

        public static void assertXMLEqual​(String err,
                                          InputSource control,
                                          InputSource test)
                                   throws SAXException,
                                          IOException
        Assert that two XML documents are similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLEqual

        public static void assertXMLEqual​(String err,
                                          String control,
                                          String test)
                                   throws SAXException,
                                          IOException
        Assert that two XML documents are similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLEqual

        public static void assertXMLEqual​(String err,
                                          Document control,
                                          Document test)
        Assert that two XML documents are similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
      • assertXMLEqual

        public static void assertXMLEqual​(String err,
                                          Reader control,
                                          Reader test)
                                   throws SAXException,
                                          IOException
        Assert that two XML documents are similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(String control,
                                             String test)
                                      throws SAXException,
                                             IOException
        Assert that two XML documents are NOT similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(Document control,
                                             Document test)
        Assert that two XML documents are NOT similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(Reader control,
                                             Reader test)
                                      throws SAXException,
                                             IOException
        Assert that two XML documents are NOT similar
        Parameters:
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(String err,
                                             InputSource control,
                                             InputSource test)
                                      throws SAXException,
                                             IOException
        Assert that two XML documents are NOT similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(String err,
                                             String control,
                                             String test)
                                      throws SAXException,
                                             IOException
        Assert that two XML documents are NOT similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(String err,
                                             Document control,
                                             Document test)
        Assert that two XML documents are NOT similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
      • assertXMLNotEqual

        public static void assertXMLNotEqual​(String err,
                                             Reader control,
                                             Reader test)
                                      throws SAXException,
                                             IOException
        Assert that two XML documents are NOT similar
        Parameters:
        err - Message to be displayed on assertion failure
        control - XML to be compared against
        test - XML to be tested
        Throws:
        SAXException - if the parser says so
        IOException - on I/O errors
      • assertXpathsEqual

        public static void assertXpathsEqual​(String controlXpath,
                                             String testXpath,
                                             Document document)
                                      throws XpathException
        Assert that the node lists of two Xpaths in the same document are equal
        Parameters:
        controlXpath - XPath for expected value
        testXpath - XPath for actual value
        document - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathsEqual

        public static void assertXpathsEqual​(String controlXpath,
                                             String testXpath,
                                             String inXMLString)
                                      throws SAXException,
                                             IOException,
                                             XpathException
        Assert that the node lists of two Xpaths in the same XML string are equal
        Parameters:
        controlXpath - XPath for expected value
        testXpath - XPath for actual value
        inXMLString - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathsEqual

        public static void assertXpathsEqual​(String controlXpath,
                                             String inControlXMLString,
                                             String testXpath,
                                             String inTestXMLString)
                                      throws SAXException,
                                             IOException,
                                             XpathException
        Assert that the node lists of two Xpaths in two XML strings are equal
        Parameters:
        controlXpath - XPath for expected value
        inControlXMLString - document for expected value
        testXpath - XPath for actual value
        inTestXMLString - document for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathsEqual

        public static void assertXpathsEqual​(String controlXpath,
                                             Document controlDocument,
                                             String testXpath,
                                             Document testDocument)
                                      throws XpathException
        Assert that the node lists of two Xpaths in two documents are equal
        Parameters:
        controlXpath - XPath for expected value
        controlDocument - document for expected value
        testXpath - XPath for actual value
        testDocument - document for actual value
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathsNotEqual

        public static void assertXpathsNotEqual​(String controlXpath,
                                                String testXpath,
                                                Document document)
                                         throws XpathException
        Assert that the node lists of two Xpaths in the same document are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        testXpath - XPath for actual value
        document - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathsNotEqual

        public static void assertXpathsNotEqual​(String controlXpath,
                                                String testXpath,
                                                String inXMLString)
                                         throws SAXException,
                                                IOException,
                                                XpathException
        Assert that the node lists of two Xpaths in the same XML string are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        testXpath - XPath for actual value
        inXMLString - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathsNotEqual

        public static void assertXpathsNotEqual​(String controlXpath,
                                                String inControlXMLString,
                                                String testXpath,
                                                String inTestXMLString)
                                         throws SAXException,
                                                IOException,
                                                XpathException
        Assert that the node lists of two Xpaths in two XML strings are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        inControlXMLString - document for not-expected value
        testXpath - XPath for actual value
        inTestXMLString - document for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathsNotEqual

        public static void assertXpathsNotEqual​(String controlXpath,
                                                InputSource controlDocument,
                                                String testXpath,
                                                InputSource testDocument)
                                         throws SAXException,
                                                IOException,
                                                XpathException
        Assert that the node lists of two Xpaths in two XML strings are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        controlDocument - document for not-expected value
        testXpath - XPath for actual value
        testDocument - document for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathsNotEqual

        public static void assertXpathsNotEqual​(String controlXpath,
                                                Document controlDocument,
                                                String testXpath,
                                                Document testDocument)
                                         throws XpathException
        Assert that the node lists of two Xpaths in two documents are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        controlDocument - document for not-expected value
        testXpath - XPath for actual value
        testDocument - document for actual value
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathValuesEqual

        public static void assertXpathValuesEqual​(String controlXpath,
                                                  String testXpath,
                                                  Document document)
                                           throws XpathException
        Assert that the evaluation of two Xpaths in the same document are equal
        Parameters:
        controlXpath - XPath for expected value
        testXpath - XPath for actual value
        document - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathValuesEqual

        public static void assertXpathValuesEqual​(String controlXpath,
                                                  String testXpath,
                                                  String inXMLString)
                                           throws SAXException,
                                                  IOException,
                                                  XpathException
        Assert that the evaluation of two Xpaths in the same XML string are equal
        Parameters:
        controlXpath - XPath for expected value
        testXpath - XPath for actual value
        inXMLString - document to apply XPaths to
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathValuesEqual

        public static void assertXpathValuesEqual​(String controlXpath,
                                                  String inControlXMLString,
                                                  String testXpath,
                                                  String inTestXMLString)
                                           throws SAXException,
                                                  IOException,
                                                  XpathException
        Assert that the evaluation of two Xpaths in two XML strings are equal
        Parameters:
        controlXpath - XPath for expected value
        inControlXMLString - document for expected value
        testXpath - XPath for actual value
        inTestXMLString - document for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathValuesEqual

        public static void assertXpathValuesEqual​(String controlXpath,
                                                  Document controlDocument,
                                                  String testXpath,
                                                  Document testDocument)
                                           throws XpathException
        Assert that the evaluation of two Xpaths in two documents are equal
        Parameters:
        controlXpath - XPath for expected value
        controlDocument - document for expected value
        testXpath - XPath for actual value
        testDocument - document for actual value
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathValuesNotEqual

        public static void assertXpathValuesNotEqual​(String controlXpath,
                                                     String testXpath,
                                                     String inXMLString)
                                              throws SAXException,
                                                     IOException,
                                                     XpathException
        Assert that the evaluation of two Xpaths in the same XML string are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        inXMLString - document to apply XPaths to
        testXpath - XPath for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathValuesNotEqual

        public static void assertXpathValuesNotEqual​(String controlXpath,
                                                     String testXpath,
                                                     Document document)
                                              throws XpathException
        Assert that the evaluation of two Xpaths in the same document are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        document - document to apply XPaths to
        testXpath - XPath for actual value
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXpathValuesNotEqual

        public static void assertXpathValuesNotEqual​(String controlXpath,
                                                     String inControlXMLString,
                                                     String testXpath,
                                                     String inTestXMLString)
                                              throws SAXException,
                                                     IOException,
                                                     XpathException
        Assert that the evaluation of two Xpaths in two XML strings are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        inControlXMLString - document for not-expected value
        testXpath - XPath for actual value
        inTestXMLString - document for actual value
        Throws:
        XpathException - if XPath construction fails
        SAXException - if the parser says so
        IOException - on I/O errors
        See Also:
        XpathEngine
      • assertXpathValuesNotEqual

        public static void assertXpathValuesNotEqual​(String controlXpath,
                                                     Document controlDocument,
                                                     String testXpath,
                                                     Document testDocument)
                                              throws XpathException
        Assert that the evaluation of two Xpaths in two documents are NOT equal
        Parameters:
        controlXpath - XPath for not-expected value
        controlDocument - document for not-expected value
        testXpath - XPath for actual value
        testDocument - document for actual value
        Throws:
        XpathException - if XPath construction fails
        See Also:
        XpathEngine
      • assertXMLValid

        public static void assertXMLValid​(InputSource xml,
                                          String systemId)
                                   throws SAXException,
                                          ConfigurationException
        Assert that an InputSource containing XML contains valid XML: the document must contain a DOCTYPE to be validated, but the validation will use the systemId to obtain the DTD
        Parameters:
        xml - the document to validate
        systemId - used to obtain the DTD
        Throws:
        SAXException - if the parser says so
        ConfigurationException - if validation could not be turned on
        See Also:
        Validator
      • assertXMLValid

        public static void assertXMLValid​(String xmlString,
                                          String systemId)
                                   throws SAXException,
                                          ConfigurationException
        Assert that a String containing XML contains valid XML: the String must contain a DOCTYPE to be validated, but the validation will use the systemId to obtain the DTD
        Parameters:
        xmlString - the document to validate
        systemId - used to obtain the DTD
        Throws:
        SAXException - if the parser says so
        ConfigurationException - if validation could not be turned on
        See Also:
        Validator
      • assertXMLValid

        public static void assertXMLValid​(InputSource xml,
                                          String systemId,
                                          String doctype)
                                   throws SAXException,
                                          ConfigurationException
        Assert that a piece of XML contains valid XML: the document will be given a DOCTYPE to be validated with the name and systemId specified regardless of whether it already contains a doctype declaration.
        Parameters:
        xml - the document to validate
        systemId - used to obtain the DTD
        doctype - DOCTYPE to use during validation
        Throws:
        SAXException - if the parser says so
        ConfigurationException - if validation could not be turned on
        See Also:
        Validator
      • assertXMLValid

        public static void assertXMLValid​(String xmlString,
                                          String systemId,
                                          String doctype)
                                   throws SAXException,
                                          ConfigurationException
        Assert that a String containing XML contains valid XML: the String will be given a DOCTYPE to be validated with the name and systemId specified regardless of whether it already contains a doctype declaration.
        Parameters:
        xmlString - the document to validate
        systemId - used to obtain the DTD
        doctype - DOCTYPE to use during validation
        Throws:
        SAXException - if the parser says so
        ConfigurationException - if validation could not be turned on
        See Also:
        Validator
      • assertXMLValid

        public static void assertXMLValid​(Validator validator)
        Assert that a Validator instance returns isValid() == true
        Parameters:
        validator - validator to check
      • assertNodeTestPasses

        public static void assertNodeTestPasses​(NodeTest test,
                                                NodeTester tester,
                                                short[] nodeTypes,
                                                boolean assertion)
        Execute a NodeTest for multiple node types and make an assertion about it whether it is expected to pass
        Parameters:
        test - a NodeTest instance containing the XML source to be tested
        tester - The test strategy
        nodeTypes - The node types to be tested: constants defined in org.w3c.dom.Node e.g. Node.ELEMENT_NODE
        assertion - true if the test is expected to pass, false otherwise
        See Also:
        AbstractNodeTester, CountingNodeTester