Как разработать модульный тест для создания PDF-документа? - PullRequest
12 голосов
/ 29 октября 2010

Я опаздываю на вечеринку в отношении использования модульного тестирования ... пытаюсь выяснить лучшие практики и тому подобное.Мой вопрос заключается в том, что, учитывая класс, который отвечает за создание PDF-файла (или Doc / Html / Xml / и т.Я рисую текстовый файл (xml), я могу просто увидеть, совпадают ли строки, но как насчет двоичного файла (pdf)?Должен ли я просто проверить хеш MD5?Стоит ли мне это проверять?

Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 29 октября 2010

Я использую pdfbox , чтобы извлечь текст из сгенерированного PDF и проверить, содержит ли он данные, которые он должен.это не проверяет, находятся ли данные в правильном месте, но я не буду углубляться в тестирование pdf.Вам нужно подумать, насколько глубоко вы хотите углубиться, чем глубже вы пойдете, тем больше времени вы потратите на исправление тестов после изменения (у меня никогда не было ошибки, что текст был в неправильном месте, и, возможно, именно поэтому я не проверял его).

Другим способом было бы использовать ту же библиотеку PDF (которую вы используете для ее записи), чтобы прочитать ее, или использовать что-то вроде iText, если вы генерируете PDF из шаблона с использованием некоторой инфраструктуры.

1 голос
/ 29 октября 2010

Было бы проблемой, если бы это не сработало?Если да, то да, вам следует его протестировать.

Теперь к следующему вопросу о том, будет ли утилита сравнения двоичных файлов работать для сравнения ожидаемых и фактических PDF-файлов?Если да, я бы использовал это.

0 голосов
/ 19 марта 2018

Для критически важных PDF-файлов (например, отправленных клиенту) я не думаю, что проверки текста достаточно.Вы хотели бы проверить макет, размеры шрифтов, обтекание текстом и т. Д. По тем же причинам, по которым мы используем Selenium для проверки веб-страниц.

Я принял решение превратить PDF в изображение, исравнивая это изображение с известным «правильным» изображением.Наши PDF-файлы менялись не очень часто и не содержали ничего, что менялось с течением времени (например, «сегодняшняя» дата).Так что этот подход работал хорошо - используя одни и те же входные данные, мы всегда могли генерировать один и тот же выходной PDF.

Я думаю, что PDFUnit теперь имеет встроенную поддержку для этого, а также многое другое: http://www.pdfunit.com/en/documentation/java/testscope/rendered-pages.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...