Как я могу проверить отчет о яшме? - PullRequest
15 голосов
/ 04 августа 2010

Я хочу проверить все отчеты о яшме моего приложения. Я хочу быть в состоянии обнаружить:

  • Проблемы с компиляцией (Будет ли проверка того, что JasperCompileManager.compileReport(some inputStream) не выбрасывает JRException - хороший вариант для этого?)
  • Проблемы с заполнением (Было бы неплохо для этого проверить, что JasperFillManager.fillReport(someReport, someParameters, someDataSource) не выбрасывает JRException?)
  • Проблемы с рендерингом: обнаружение появления «нулевых» строк, текст в усеченном файле PDF выглядит усеченным
  • Есть еще идеи?

В идеале я бы хотел, чтобы процесс тестирования был максимально общим. Дело в том, что у каждого яшмы есть свой источник данных, поэтому для обнаружения этих ошибок мне нужно сгенерировать в списке некоторые данные (верно?), И эти данные, которые мне нужно сгенерировать, отличаются для каждого яшмы моего приложения. Так что я не знаю, сколько тестового кода я смогу использовать повторно. Какой подход вы бы выбрали?

Спасибо!

Ответы [ 6 ]

2 голосов
/ 19 апреля 2011

Я создал пару модульных тестов для тестирования аспектов.

  1. Проблемы компиляции: я создал класс для загрузки и компиляции всех моих шаблонов.Моя среда основана на Интернете.Таким образом, я также проверил путь через это.

  2. Для заполнения: я смоделировал данные и JRDataSource для заполнения шаблона, который работает для меня.

  3. Для рендеринга: я не нашел хорошего подхода для этого.У кого-нибудь есть идеи?

А также, я обычно использую источник данных JavaBean, чтобы я мог тестировать отчеты, используя традиционный метод модульного тестирования Java.

2 голосов
/ 10 августа 2010

В случае проблем компиляции одним из подходов будет использование инструмента iReport, и все шаблоны отчетов успешно компилируются;Предполагая, что вы используете шаблоны, а затем вводите в них данные.

Я нашел следующую ссылку полезной,

http://flexingcode.blogspot.com/2009/04/junit-for-jasper-reports.html

Надеюсь, что поможет,

Манджу

1 голос
/ 03 июля 2017

Для проблем компиляции и для проблем заполнения: Да, вы можете сделать, как описано, и просто попытаться скомпилировать и заполнить отчет.Если это не создает исключение, то у вас все в порядке.

Для третьего этапа проверки проблем рендеринга я экспортирую отчет в XML:

String xml = JasperExportManager.exportReportToXml(
    JasperFillManager.fillReport(report, params, dataSource)
);

Теоретически XML является точнымпредставление файла PDF, но в формате, который легко прочитать в тестах.Например, если поле слишком длинное, а содержимое усекается, то оно также усекается в XML.Все значения уже находятся в формате «рендеринга», поэтому, если, например, у вас есть число, которое вы форматируете с помощью (DecimalFormat) -pattern, то это число будет отформатировано в XML.Также идентификаторы uuid для полей все еще присутствуют в XML, так что вы также можете легко найти поля.Чтобы проверить поле, вы можете, например, сделать что-то вроде:

hasXPath("//*[@uuid = '" + field.getUuid() + "']/../*[local-name() = 'textContent']", matcher)
1 голос
/ 16 декабря 2016

Относительно подхода PDFbox для тестирования содержимого документов PDF: я только что обнаружил проект с открытым исходным кодом jPdfUnit, который очень помогает:

Проверьте документы здесь: http://jpdfunit.sourceforge.net/docs/GettingStarted.html

Он основан на junit 3 и не обслуживался годами, а просто работает. Один из трюков, который мне пришлось применить, чтобы заставить его работать, - установить версию pdfbox на 1.8.13. Просто введите это в свой, если вы используете Maven:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.apache.pdfbox</groupId>
                <artifactId>pdfbox</artifactId>
                <!-- jpdfunit is not compatible with pdfbox 2 (java5 vs java6) -->
                <version>1.8.13</version>
            </dependency>
        </dependencies>
</dependencyManagement>
1 голос
/ 21 июля 2014

Один из подходов к визуализации может состоять в том, чтобы экспортировать отчет в PDF и затем использовать что-то вроде PDFBox (Apache) для проверки содержимого. Также вы можете сделать то же самое с экспортом в файл Excel, а затем использовать Apache POI или JExcelAPI для проверки содержимого ячейки.

Привет

Фран

1 голос
/ 22 апреля 2011

Для автоматической компиляции вы можете попытаться скомпилировать отчеты с помощью скрипта Ant (см. 1 или http://jasperreports.sourceforge.net/api/net/sf/jasperreports/ant/package-summary.html)

Задача Ant подходит для использования в системе автоматического построения или непрерывной интеграции, такой как mavenили Дженкинс.

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