XQUT - Unit Testing in Pure XQuery
September 13, 2011 at 04:06 PM | categories: XQuery, MarkLogic | View CommentsI was working on a couple of pure XQuery projects that needed unit testing. While I could have integrated with JUnit or another existing framework, I really wanted something simple that I could run directly from cq. Hence XQUT.
XQUT will usually be invoked like this:
The cq app server should point to the code you are testing,
so that your test suite can import libraries. The eval root is
different: it is the location of the XQUT code, so that you only need
one copy of XQUT. The external variable SUITE
is an XML
test suite. A simple test suite might look like this:
The XML is fairly simple. Under the root suite
element we have one or more unit
elements, each
representing a test. The test XQuery can be defined as the lexical
value of the element, or as its expr
child. The result
can be defined by a result
attribute or element.
For more sophisticated tests, you can
add xsi:type
attributes and sequences
of result
elements. You can also use an
optional environment
element to import libraries, define
variables, and define namespace prefixes. If you
add setup
elements, these will be evaluated before any
tests. The test
suite for XQUT itself contains more examples.