我有一些日益复杂的XSLT样式表,如果我可以在CI构建过程中对它们进行一些测试,甚至可以使用TDD来开发它们,那将会很有帮助。我目前正在使用Visual Studio通过样式表运行XML片段,我手动检查结果。
大家会为此推荐什么?理想情况下,可以很容易地集成到CruiseControl.NET和/或MsBuild中。
答案 0 :(得分:5)
我所做的是使用我的标准单元测试系统和一个用于测试输出的良好库。在我当前的项目中,输出是XHTML,我使用的是JUnit和xml-unit。在之前的项目中,输出是XSL-FO,我使用了python-unit和xmllib。这允许我通过单个测试仅检查输出的一部分来逐渐构建XSLT(使用TDD)。但是,如果输出是文本,我可能会比较整个结果。我使用现有的单元测试软件有两个原因。首先,我熟悉它,所以开始起来更快。其次,如果测试已经使用了构建期望的测试类型,那么使用构建来自动化测试非常容易。
答案 1 :(得分:2)
我想我会用你选择的编程语言(例如C#)为它们编写单元测试。有一组输入xmls和相应的预期输出,只需在这些输出上运行xsl,并确保它们与输出匹配。我不确定是否有更聪明的方法进行测试。
答案 2 :(得分:2)
请参阅:
http://www.jenitennison.com/xslt/utilities/unit-testing/
和
http://nwalsh.com/docs/presentations/xml2005/slides.pdf
和
答案 3 :(得分: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>
答案 4 :(得分:1)
我在使用XSL-T的项目上工作。我们有一些与visual studio一起运行的数据驱动测试。我也相信N-Unit有一些数据驱动的测试功能。