有人知道是否有方法可以为XSLT转换编写单元测试。我有很多XSLT文件,并且越来越难以手动测试它们。我知道我们可以有一个示例XML并将其与XSLT的输出进行比较,但我正在寻找更好的方法来测试它们。XSLT单元测试
谢谢...
有人知道是否有方法可以为XSLT转换编写单元测试。我有很多XSLT文件,并且越来越难以手动测试它们。我知道我们可以有一个示例XML并将其与XSLT的输出进行比较,但我正在寻找更好的方法来测试它们。XSLT单元测试
谢谢...
尝试XSpec,XSLT的一个测试框架。它允许您以声明方式编写测试,并测试模板和函数。
我目前正在寻找一些很好的选择来做到这一点。因此,我遇到了这个问题,以及其他一些潜在的候选解决方案。无可否认,我还没有尝试过其中的任何一个,所以我不能说出它们的质量,但至少它们是可能值得研究的其他途径。
此外,我发现下面的文章,以翔实的单元测试XSLT的一般方法的条款。
有没有更新?你有尝试过吗? – 2014-08-28 12:41:22
不幸的是,在我开始研究它之后不久,我的工作就将这项任务放在了工作上,我从未有机会重新审视它。 – Scott 2014-09-04 15:57:23
看起来氧编辑器有单元测试可用。它“provides XSLT Unit Test support based on XSpec”。
我还没有尝试过自己,但很快。
我们一直在使用基于Java的单元测试用例,其中我们在转换后提供预期的xml字符串,并输入需要使用某些XSL转换的xml字符串。 如果您想要了解更多信息,请参阅以下软件包。
org.custommonkey.xmlunit.Transform
org.custommonkey.xmlunit.Diff
org.custommonkey.xmlunit.DetailedDiff
这里有几个简单的解决方案:
使用xsltproc的一个模拟的XML文件:
xsltproc test.xsl mock.xml
创建document()
占位符变量和评论/手动取消注释:
<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>
创造条件以编程方式交换意见:
<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>
使用shell脚本编程内联数据在生成的测试完全自动化。
参考
Running XSLT at the Department: Command Line XSLT Processing
Building TransforMiiX standalone - Archive of obsolete content | MDN
MicroHowTo: Process an XML document using an XSLT stylesheet
Embedded Stylesheet Modules: XSL Transformations (XSLT) Version 3.0
XMLStarlet command line XML toolkit download | SourceForge.net
I'm:jxsltunit。
测试由一个XML文件定义,然后传递给该工具。这是测试配置的一个示例:
<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>
它需要XML,XSL和经过测试的转换XML中的路径。该路径可以包含一个列表,其中的元素由其索引标识。
此工具的一个好处是它可以输出结果作为junit XML文件。 Jenkins可以找到该文件,以在您的测试结果中显示XLST测试。只需将该调用添加到构建步骤。
如何使用XSpec测试特定模式下的转换? – 2016-01-18 10:48:06