有人知道是否有方法可以爲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