4.11. Layout vergleichen (gerenderte Seiten)

PDF-Dokumente können seitenweise als gerenderte Bilder (PNG) verglichen werden:

<testcase name="haveSameAppearance_CompleteDocument">
  <assertThat testDocument="test/test.pdf"
              masterDocument="master/master.pdf"
  >
    <haveSameAppearance on="EVERY_PAGE" />
  </assertThat>
</testcase>

Bestimmte Seiten können auf vielfältige Weise selektiert 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:

<testcase name="haveSameAppearance_OnFirstPage_InClippingArea">
  <assertThat testDocument="test/test.pdf"
              masterDocument="master/master.pdf"
  >
    <haveSameAppearance on="FIRST_PAGE">
      <inClippingArea upperLeftX="50" upperLeftY="755" 
                      width="370" height="35" 
                      unit="POINTS"
      />
    </haveSameAppearance>
  </assertThat>
</testcase>

Die Werte für die Definition des Seitenausschnitts können in den Einheiten POINTS, MILLIMETER, CENTIMETER, INCH und DPI72 angegeben werden. Die Namen sind als Konstanten für das Attribut unit=".." definiert. Wenn keine Einheit angegeben wird, werden die Werte als MILLIMETER interpretiert.

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 wird folgendermaßen gebildet:

Aufgrund der Standardkonfiguration wird ein Diff-Image für Testdateien im selben Verzeichnis abgespeichert, in dem auch die Testdatei liegt. Diff-Images für Streams und Byte-Arrays werden im Home-Verzeichnis des laufenden Java-Prozess abgelegt. Sie können diese Einstellungen in der Datei config.properties ändern.

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.