如何对XSLT样式表进行自动化测试?

12

我有一些越来越复杂的XSLT样式表,如果我能在CI构建过程中运行一些测试,甚至使用TDD来开发它们,那将非常有帮助。目前我正在使用Visual Studio通过样式表运行XML片段,并手动检查结果。

大家推荐什么工具呢?最好能轻松集成到CruiseControl.NET和/或MsBuild中。


好问题(+1)。请查看我的答案以获取一些链接。 - Dimitre Novatchev
5个回答

5
我所做的是使用标准单元测试系统和一个好的测试输出库。在我的当前项目中,输出是XHTML,我使用JUnit和xml-unit。在以前的项目中,输出是XSL-FO,我使用python-unit和xmllib。这使我能够逐步构建XSLT(使用TDD),通过仅检查输出的一部分来进行单个测试。然而,如果输出是文本,我可能会比较整个结果。我使用当前的单元测试软件有两个原因。首先,我熟悉它,因此可以更快地开始。其次,如果已经使用了构建所期望的测试类型,则测试非常容易与构建自动化。

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>

2

我认为你应该用你选择的编程语言(比如C#)来为它们编写单元测试。准备一组输入XML文件和相应的预期输出,然后在这些文件上运行XSL,并确保输出结果与预期结果匹配。我不确定是否有更聪明的测试方式。


2

@Duncan-Smart:是的,我不会背链接。我没有提供的唯一真正重要的数据是Tony Graham的调查。 - Dimitre Novatchev

1

我正在一个使用XSL-T的项目上工作。我们在Visual Studio中运行了一些数据驱动测试。我也相信N-Unit有一些数据驱动测试功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接