Tests auf ein einzelnes PDF-Dokument beginnen mit der Benennung
der zu testenden Datei über die Methode AssertThat.document(..)
.
Von dort aus verzweigen die Tests in unterschiedliche Testbereiche, wie z.B. Inhalt, Schriften,
Layout etc.:
// Instantiation of PDFUnit for a single document: AssertThat.document(filename) 13.1: „Instantiierung der PDF-Dokumente“ ... // Switch to one of many test scopes. // Compare one PDF with a reference: AssertThat.document(filename) .and(..) 4.1: „Überblick“ ...
Das PDF-Dokument kann als Datentyp |
Wenn mehrere PDF-Dokumente in einen Test einfließen,
beginnt er mit der Methode AssertThat.eachDocument(..)
:
// Instantiation of PDFUnit for multiple documents: ... File[] files = {file1, file2, file3}; AssertThat.eachDocument(filename) 5: „Mehrere Dokumente und Verzeichnisse“ .hasText(..) .containing(..) ;
Die PDF-Dokumente können als |
Tests können sich auch auf alle PDF-Dokumente in einem Verzeichnis beziehen.
Solche Tests beginnen mit der Methode AssertThat.eachDocument().inFolder(..)
:
// Instantiation of PDFUnit for a folder: ... File folderToCheck = new File(..); AssertThat.eachDocument() .inFolder(folderToCheck) 5.3: „Verzeichnis testen“ .hasText(..) .containing(..) ;
Tests, die einen Fehler erwarten, müssen die PDFUnitValidationException
abfangen.
Hier ein Beispiel für einen Test, der einen Fehler erwartet:
@Test(expected=PDFUnitValidationException.class) public void isSigned_DocumentNotSigned() throws Exception { String filename = "documentUnderTest.pdf"; AssertThat.document(filename) .isSigned() ; }
Die folgende Liste gibt einen vollständigen Überblick über die Testgebiete von PDFUnit. Der jeweilige Link hinter einer Methode verweist auf das Kapitel, das das Testgebiet ausführlich beschreibt.
// Every one of the following methods opens a new test scope: .asRenderedPage() 3.18: „Layout - gerenderte volle Seiten“ .containsImage(..) 3.7: „Bilder in Dokumenten“ .containsOneImageOf(..) 3.7: „Bilder in Dokumenten“ .hasAuthor() 3.10: „Dokumenteneigenschaften“ .hasBookmark() 3.20: „Lesezeichen/Bookmarks und Sprungziele“ .hasBookmarks() 3.20: „Lesezeichen/Bookmarks und Sprungziele“ .hasCreationDate() 3.8: „Datum“ .hasCreator() 3.8: „Datum“ .hasEmbeddedFile(..) 3.3: „Anhänge (Attachments)“ .hasEncryptionLength(..) 3.21: „Passwort“ .hasField(..) 3.14: „Formularfelder“ .hasFields(..) 3.14: „Formularfelder“ .hasFont() 3.24: „Schriften“ .hasFonts() 3.24: „Schriften“ .hasFormat(..) 3.13: „Format“ .hasImage(..) 3.7: „Bilder in Dokumenten“ .hasJavaScript() 3.16: „JavaScript“ .hasJavaScriptAction() 3.2: „Aktionen (Actions)“ .hasKeywords() 3.10: „Dokumenteneigenschaften“ .hasLanguageInfo(..) 3.27: „Sprachinformation (Language)“ .hasLayer() 3.17: „Layer“ .hasLayers() 3.17: „Layer“ .hasLessPagesThan() 3.25: „Seitenzahlen als Testziel“ .hasLocalGotoAction() 3.2: „Aktionen (Actions)“ .hasModificationDate() 3.8: „Datum“ .hasMorePagesThan() 3.25: „Seitenzahlen als Testziel“ .hasNamedDestination() 3.20: „Lesezeichen/Bookmarks und Sprungziele“ .hasNoAuthor() 3.10: „Dokumenteneigenschaften“ .hasNoCreationDate() 3.8: „Datum“ .hasNoCreator() 3.10: „Dokumenteneigenschaften“ .hasNoImage() 3.7: „Bilder in Dokumenten“ .hasNoKeywords() 3.10: „Dokumenteneigenschaften“ .hasNoLanguageInfo() 3.27: „Sprachinformation (Language)“ .hasNoModificationDate() 3.8: „Datum“ .hasNoProducer() 3.10: „Dokumenteneigenschaften“ .hasNoProperty(..) 3.10: „Dokumenteneigenschaften“ .hasNoSubject() 3.10: „Dokumenteneigenschaften“ .hasNoText() 3.28: „Texte“ .hasNoTitle() 3.10: „Dokumenteneigenschaften“ .hasNoXFAData() 3.36: „XFA Daten“ .hasNoXMPData() 3.37: „XMP-Daten“ .hasNumberOf...() 3.4: „Anzahl verschiedener PDF-Bestandteile“ .hasOCG() 3.17: „Layer“ .hasOCGs() 3.17: „Layer“ .hasOwnerPassword(..) 3.21: „Passwort“ .hasPermission() 3.6: „Berechtigungen“ .hasProducer() 3.10: „Dokumenteneigenschaften“ .hasProperty(..) 3.10: „Dokumenteneigenschaften“ .hasSignatureField(..) 3.26: „Signaturen - Unterschriebenes PDF“ .hasSignatureFields() 3.26: „Signaturen - Unterschriebenes PDF“ .hasSubject() 3.10: „Dokumenteneigenschaften“ .hasText() 3.28: „Texte“ .hasTitle() 3.10: „Dokumenteneigenschaften“ .hasUserPassword(..) 3.21: „Passwort“ .hasVersion() 3.35: „Version“ .hasXFAData() 3.36: „XFA Daten“ .hasXMPData() 3.37: „XMP-Daten“ .hasZugferdData() 3.39: „ZUGFeRD“ .haveSame...() 4.1: „Überblick“ .isCertified() 3.38: „Zertifiziertes PDF“ .isCertifiedFor(..) 3.38: „Zertifiziertes PDF“ .isLinearizedForFastWebView() 3.12: „Fast Web View“ .isSigned() 3.26: „Signaturen - Unterschriebenes PDF“ .isSignedBy(..) 3.26: „Signaturen - Unterschriebenes PDF“ .isTagged() 3.34: „Tagging“ .restrictedTo(..) 13.2: „Seitenauswahl“
Manche Testbereiche erreicht man erst nach einem weiteren Methodenaufruf:
// Validation of bar code and QR code: .hasImage().withBarcode() 3.5: „Barcode“ .hasImage().withQRcode() 3.23: „QR-Code“ // Validation based on Excel files: .compliesWith().constraints(excelRules) 3.11: „Excel-Dateien für Validierungsregeln“ // Validation of DIN5008 constraints: .compliesWith().din5008FormA() 3.9: „DIN 5008“ .compliesWith().din5008FormB() 3.9: „DIN 5008“ .compliesWith().pdfStandard() 3.22: „PDF/A“ // Validation around ZUGFeRD: .compliesWith().zugferdSpecification(..) 3.39: „ZUGFeRD“
PDFUnit wird ständig weiterentwickelt und die Dokumentation aktuell gehalten. Sollten Sie Tests vermissen, schicken Sie Ihre Wünsche und Vorschläge an info[at]pdfunit.com.