为iText生成的PDF编写JUnits

时间:2012-05-02 21:09:32

标签: java junit pdf-generation itext

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

1 个答案:

答案 0 :(得分:2)

鉴于您正在使用Java,我将查看PDFBox(Apache)。您所要求的是非常具有挑战性的,因为您重新翻译的PDF可能在语法上与您的原始语句不同。您可能需要考虑往返。

PDF等文档在比较方面可能很脆弱。如果您发现比较失败,则可能无法指示故障的位置。 PDF文档可能非常复杂(高度分支的树)。您可能需要查找文档的规范化以进行比较(我为XML文档执行此操作)。

我的猜测是,完整的测试是过度的,并且您目前的测试尽可能以合理的成本进行测试。

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

位图方法可能适用于人类,但对实数问题非常敏感 - 舍入错误会在不同的像素中写入一些内容。对于新的OS版本,它几乎肯定会有不同的行为。