6

我很好奇是否有人有为 Java 生成的 PDF(尤其是 iText)编写 JUnit 的经验。我在谷歌上进行了快速搜索,但找不到任何具体内容。到目前为止,我能够做的是检查 PDF 是否已生成,是否有一定数量的页面并且文档是否已关闭。但我无法验证文件的内容。有人可以举一个例子,他们过去做了什么来达到这样的结果吗?还是我完全错了,我的 PDF 的 JUnit 是多余的?谢谢

4

1 回答 1

3

鉴于您使用的是 Java,我想看看PDFBox (Apache)。您要问的内容非常具有挑战性,因为您重新转换的 PDF 在语法上可能与您的原始文件不同。您可能需要考虑往返。

就比较而言,PDF 等文档可能很脆弱。如果您发现比较失败,则可能无法说明失败的位置。PDF 文档可能非常复杂(高度分支的树)。您可能需要寻找文档的规范化来比较它们(我为 XML 文档这样做)。

我的猜测是,一个完整的测试是多余的,你当前的测试以合理的成本尽可能好。

更新:我已经检查了 PDFBox 的 PDDocument.equals(PDDocument) 并且没有深度等于方法。这表明他们没有发现它值得(它需要在许多子节点上递归)。还有很多实数,所以这些都必须与容差进行比较。

位图方法可能适用于人类,但对实数问题非常敏感 - 舍入错误会在不同的像素中写入位。几乎可以肯定,新操作系统版本的行为会有所不同。

于 2012-05-02T21:56:24.840 回答