PDF-Dokumente können seitenweise als gerenderte Bilder (PNG) verglichen werden:
@Test public void haveSameAppearanceCompleteDocument() throws Exception { String filenameTest = "documentUnderTest.pdf"; String filenameReference = "reference.pdf"; AssertThat.document(filenameTest) .and(filenameReference) .restrictedTo(EVERY_PAGE) .haveSameAppearance() ; }
Ein Test kann auf vielfältige Weise auf individuelle Seiten eingeschränkt werden. Alle Möglichkeiten werden in Kapitel 13.2: „Seitenauswahl“ beschrieben.
Der Vergleich zweier Seiten kann auch auf einen Ausschnitt der Seite beschränkt werden:
@Test public void haveSameAppearanceInPageRegion() throws Exception { String filenameTest = "documentUnderTest.pdf"; String filenameReference = "reference.pdf"; int leftX = 0; int upperY = 0; int width = 210; int height = 50; PageRegion pageRegion = new PageRegion(leftX, upperY, width, height); AssertThat.document(filenameTest) .and(filenameMaster) .restrictedTo(EVERY_PAGE) .restrictedTo(pageRegion) .haveSameAppearance() ; }
Wird bei einem Test mit gerenderten Seiten ein Fehler erkannt, erstellt PDFUnit einen Fehlerreport als Diff-Image. Hier ein Beispiel:
|
Die Überschrift dieses Diff-Bildes enthält den Namen des Tests und in der Fehlermeldung wird der Name des Diff-Bildes genannt. So ist eine Querverbindung zwischen Test und Fehlerbild gegeben.
|
Der Dateiname der Diff-Image-Datei enthält:
den vollständigen Name der Testdatei,
ein formatiertes Datum im Format 'yyyyMMdd-HHmmssSSS'
und als Suffix die Zeichenkette '.out.png'.
Der Ort für die Ablage der Diff-Images wird in der Konfigurationsdatei pdfunit.config
über den Schlüssel output.path.diffimages
bestimmt.
Um die Dokumente eines fehlgeschlagenen Tests weiter zu analysieren, hat sich das
Programm DiffPDF
bewährt. Informationen zu dieser Open-Source-Anwendung
von Mark Summerfield gibt es auf dessen Projekt-Site
http://soft.rubypdf.com/software/diffpdf.
Unter Linux kann das Programm beispielsweise mit
apt-get install diffpdf
installiert werden. Für Windows gibt es
eine 'Portable Application unter
http://portableapps.com/apps/utilities/diffpdf_portable.