Zurück |  | Weiter

# Kapitel 3. Funktionsumfang

## 3.1. Überblick

### Syntaktischer Einstieg

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 `String`, `File`, `InputStream`, `URL` oder `byte[]` an die Funktion übergeben werden.

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 `String[]`, `File[]`, `InputStream[]`, oder `URL[]` an die Funktion übergeben werden.

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(..)
    ;

| Alle PDF-Dokumente in diesem Verzeichnis werden validiert. PDF-Dokumente in Unterverzeichnisse werden nicht geprüft.

### Exception für erwartete Fehler

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()
      ;
    }

### Testbereiche

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.

Zurück |  | Weiter
Kapitel 2. Quickstart | Zum Anfang | 3.2. Aktionen (Actions)