4.10. Layout vergleichen (gerenderte Seiten)

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:

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.