我有一些日益複雜的XSLT樣式表,如果我可以對它們運行一些測試作爲我的CI構建過程的一部分,甚至可以使用TDD來開發它們,這將會很有幫助。我目前使用Visual Studio通過樣式表運行XML的片段,並且我正在手動檢查結果。如何執行XSLT樣式表的自動化測試?
大家爲此推薦什麼?理想情況下,將很容易集成到CruiseControl.NET和/或MsBuild中。
我有一些日益複雜的XSLT樣式表,如果我可以對它們運行一些測試作爲我的CI構建過程的一部分,甚至可以使用TDD來開發它們,這將會很有幫助。我目前使用Visual Studio通過樣式表運行XML的片段,並且我正在手動檢查結果。如何執行XSLT樣式表的自動化測試?
大家爲此推薦什麼?理想情況下,將很容易集成到CruiseControl.NET和/或MsBuild中。
我想我會用你選擇的編程語言(例如C#)爲它們編寫單元測試。有一個輸入xml和相應的預期輸出的集合,並運行這些xsl,並確保它們匹配輸出。我不確定是否有更智能的方法來進行測試。
參見:
http://www.jenitennison.com/xslt/utilities/unit-testing/
和:
http://nwalsh.com/docs/presentations/xml2005/slides.pdf
和:
幹得好谷歌! ;-) – 2010-06-25 13:48:31
@ Duncan-Smart:是的,我不記得心連心。我沒有提供的唯一真正重要的數據是託尼格雷厄姆的一項調查 – 2010-06-25 23:09:40
如果你熟悉Apache Cocoon,你可以使用CoUnit,它使用xslt-unit。
測試用例是這樣的:
<testcase id="03-reverse" ignore-whitespace="true">
<input>
<text-to-reverse>
The text in this element
<embedded-element/>
will be reversed.
</text-to-reverse>
</input>
<expect>
<text-to-reverse>
tnemele siht ni txet ehT
<embedded-element/>
.desrever eb lliw
</text-to-reverse>
</expect>
<xslt src="reverse.xsl"/>
</testcase>
我對使用XSL-T的一個項目工作。我們有一些使用visual studio運行的數據驅動的測試。我也相信N-Unit有一些數據驅動的測試功能。
我所做的是用我的標準單元測試系統和一個很好的庫來測試輸出。在我目前的項目中,輸出是XHTML,我正在使用JUnit和xml-unit。在之前的項目中,輸出是XSL-FO,我使用了python-unit和xmllib。這使我可以逐漸構建XSLT(使用TDD),只需單個測試檢查部分輸出。但是,如果輸出是文本,我可能會比較整個結果。我使用我現有的單元測試軟件有兩個原因。首先,我對它很熟悉,所以開始起步更快。其次,如果測試已經使用了構建期望的測試類型,那麼測試對於構建來說是非常容易的。
好問題(+1)。查看我的答案瞭解一些鏈接。 – 2010-06-25 13:34:10