【问题标题】:Unit Test to check occurence of a large xml snippet inside a large xml file用于检查大型 xml 文件中是否出现大型 xml 片段的单元测试
【发布时间】:2014-11-16 16:48:48
【问题描述】:

我有一个应用程序,它根据大量参数输出一个大的 Word XML Formatted xml 文件(沿 200000 行)。

我想编写单元测试来根据参数组合检查输出文件的内容。

我需要一种方法来检查输出文件中是否存在大型 xml sn-p,而不会出现与格式相关的问题(标签外的空格、制表符、新行等):

//that would be perfect
assertXMLContains("Checking if outputted xml contains the needed xml snipped",
                       outputtedXml, mySnipXML);

优秀的 XMLUnit (http://xmlunit.sourceforge.net/) 提供了一种仅断言 xml 内容相等的方法,所以我似乎无法使用它。

下面是我们需要搜索的那种 xml sn-ps 的示例。它们可以是 w:p 或 w:r 元素的串联,不一定要在父元素内分组...

         <w:r w:rsidR="00EE0BED" w:rsidRPr="009322FC">
                        <w:rPr>
                            <w:rFonts w:ascii="Times New Roman Bold" w:eastAsia="Times New Roman" w:hAnsi="Times New Roman Bold"/>
                            <w:b/>
                            <w:caps/>
                            <w:sz w:val="24"/>
                            <w:szCs w:val="24"/>
                            <w:lang w:eastAsia="en-GB"/>
                        </w:rPr>
                        <w:t>Annex V</w:t>
                    </w:r>
                    <w:r w:rsidR="00B40C3C" w:rsidRPr="009322FC">
                        <w:rPr>
                            <w:rFonts w:ascii="Times New Roman Bold" w:eastAsia="Times New Roman" w:hAnsi="Times New Roman Bold"/>
                            <w:b/>
                            <w:caps/>
                            <w:sz w:val="24"/>
                            <w:szCs w:val="24"/>
                            <w:lang w:eastAsia="en-GB"/>
                        </w:rPr>
                        <w:t>II</w:t>
                    </w:r>

【问题讨论】:

  • 你不能只使用 XPath 来查找所需的元素吗?
  • 我不这么认为。上面的例子只是一个小sn-p。通常,我们会按特定顺序搜索几十个 元素,除了 元素的内容(即 Annex V)

标签: java xml unit-testing ms-word


【解决方案1】:

这不是大多数人所说的“单元测试”的意思...

用于 XSLT 和 XQuery 的 W3C 测试套件(可公开获得)已不再比较 XML 结果的相等性,因为那太不灵活了,而且出于您所描述的原因。相反,他们使用断言系统,通常是 XPath 表达式,就像 Selenium。

【讨论】:

  • 我同意这更接近集成测试。不过,XPath 使用起来会非常笨拙。我们通常会按特定顺序查找几十个 元素,除了 元素的内容(即 Annex V )。这只是一项测试。
  • 您可能在一项测试中死记硬背。如果您想测试大型结果文档中的所有内容是否符合预期,最好将结果规范化并比较规范形式。这就是我们过去所做的。但是我们现在尝试进行更多更小的测试,其成功可以通过少数 XPath 表达式来衡量。
  • 不幸的是,规范化一个 200000 行的 Word 文件会增加测试的负担。此外,sn-p xml 中的表格需要与更大的 Word 文档中的表格相匹配,这不能通过规范化来解决。
  • 正如我所说,我认为您在一次测试中尝试做的太多了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多