2010-06-25 39 views
12

我有一些日益複雜的XSLT樣式表,如果我可以對它們運行一些測試作爲我的CI構建過程的一部分,甚至可以使用TDD來開發它們,這將會很有幫助。我目前使用Visual Studio通過樣式表運行XML的片段,並且我正在手動檢查結果。如何執行XSLT樣式表的自動化測試?

大家爲此推薦什麼?理想情況下,將很容易集成到CruiseControl.NET和/或MsBuild中。

+0

好問題(+1)。查看我的答案瞭解一些鏈接。 – 2010-06-25 13:34:10

回答

2

我想我會用你選擇的編程語言(例如C#)爲它們編寫單元測試。有一個輸入xml和相應的預期輸出的集合,並運行這些xsl,並確保它們匹配輸出。我不確定是否有更智能的方法來進行測試。

2

如果你熟悉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> 
1

我對使用XSL-T的一個項目工作。我們有一些使用visual studio運行的數據驅動的測試。我也相信N-Unit有一些數據驅動的測試功能。

5

我所做的是用我的標準單元測試系統和一個很好的庫來測試輸出。在我目前的項目中,輸出是XHTML,我正在使用JUnit和xml-unit。在之前的項目中,輸出是XSL-FO,我使用了python-unit和xmllib。這使我可以逐漸構建XSLT(使用TDD),只需單個測試檢查部分輸出。但是,如果輸出是文本,我可能會比較整個結果。我使用我現有的單元測試軟件有兩個原因。首先,我對它很熟悉,所以開始起步更快。其次,如果測試已經使用了構建期望的測試類型,那麼測試對於構建來說是非常容易的。