unit-testing xslt methodology xslt-tools

unit testing - Pruebas unitarias XSLT



unit-testing methodology (6)

Alguien sabe si hay una forma en que podamos escribir pruebas unitarias para la transformación XSLT. Tengo mucho para archivos XSLT y cada vez es más difícil probarlos manualmente. Sé que podemos tener un XML de muestra y compararlo con el resultado del XSLT, pero estoy buscando una mejor manera de probarlos.

Gracias...


Actualmente estoy buscando algunas buenas opciones para hacer esto también. Como resultado, me encontré con esta pregunta y algunas otras posibles soluciones candidatas. Es cierto que aún no he probado ninguno de ellos, así que no puedo hablar de su calidad, pero al menos son otras vías potencialmente valiosas para investigar.

  1. Paquete de prueba de unidad de Jenni Tennison
  2. UTF-X Unit Testing Framework
  3. Juxy
  4. XTC

Además, encontré que el siguiente artículo es informativo en términos de una metodología general para pruebas unitarias XSLT.

Unidad de prueba transformaciones XSL


Aquí hay algunas soluciones simples:

  • Use xsltproc con un archivo XML falso:

    xsltproc test.xsl mock.xml

  • Recetario XSLT - Capítulo 13

  • Cree una variable de marcador de posición document() y coméntela / desactívela manualmente:

    <xsl:variable name="Data" select="descendant-or-self::node()"/> <!-- <xsl:variable name="Data" select="document(''foo.xml'')" /> --> <xsl:if test="$Data/pagename=''foo''"> <p>hi</p> </xsl:if>

  • Cree una condición para intercambiar el comentario mediante programación:

    <xsl:variable name="Data"> <xsl:choose> <!-- If source XML is inline --> <xsl:when test="descendant-or-self::node()/pageName=''foo''"/> <xsl:value-of select="descendant-or-self::node()"/> </xsl:when> <!-- If source XML is external --> <xsl:otherwise> <xsl:value-of select="document(''foo.xml'')" /> </xsl:otherwise> </xsl:choose> </xsl:variable>

Utilice un script de shell para incorporar los datos de forma programática en la compilación para automatizar las pruebas por completo.

Referencias


Estoy usando esta herramienta: jxsltunit .

La prueba está definida por un archivo XML que luego se pasa a la herramienta. Este es un ejemplo de la configuración de prueba:

<xsltTestsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="jxsltunit jxslttestsuite.xsd" xmlns="jxsltunit" description="Testsuite Test" xml="min-test.xml" xslt="min-test.xslt" path="pa > ch"> <xsltTestcase match_number="0"> <![CDATA[<ch>child 1</ch>]]> </xsltTestcase> <xsltTestcase match_number="1"> <![CDATA[<ch>child 2</ch>]]> </xsltTestcase> </xsltTestsuite>

Toma el XML, el XSL y una ruta en el XML transformado que se prueba. La ruta puede contener una lista de los elementos identificados por su índice.

Un beneficio de esta herramienta es que puede mostrar los resultados como un archivo XML junit. Este archivo puede ser recogido por su Jenkins para mostrar las pruebas XLST en los resultados de sus pruebas. Simplemente agregue la llamada a la herramienta como un paso de compilación.


Hemos estado utilizando casos de prueba de unidades basados ​​en Java, en los que proporcionamos la cadena xml esperada después de la transformación e ingresamos la cadena xml que necesita ser transformada usando algún XSL. Consulte el siguiente paquete si desea explorar más.

org.custommonkey.xmlunit.Transform org.custommonkey.xmlunit.Diff org.custommonkey.xmlunit.DetailedDiff



Pruebe XSpec , un marco de prueba para XSLT. Le permite escribir pruebas declarativamente y probar plantillas y funciones.