Tests mit Verzeichnissen beginnen alle mit folgenden Methoden:
File folder = new File(folderName); AssertThat.eachDocument().inFolder(folder)
.passedFilter(filter)
... ;
Diese beiden Methoden sind der syntaktische Einstieg für
Tests, die sich auf alle Dateien im angegebenen Verzeichnis
beziehen, die die Dateiendung |
|
Mit einem (optionalen) Filter kann die Menge der zu testenden Dokumente eingeschränkt werden. Es können mehrere Filter verwendet werden. Ohne Filter werden alle PDF-Dokumente des Verzeichnisses getestet. |
Ein Test bricht ab, sobald ein Dokument im Verzeichnis den Test nicht erfüllt.
Falls die Verwendung von Filtern dazu führt, dass kein Dokument mehr übrig bleibt, wird eine Fehlermeldung erzeugt. Ebenso gibt es einen Fehler, wenn das Verzeichnis keine Dokumente enthält.
Das folgende Beispiel testet, ob alle PDF-Dokumente im angegebenen Verzeichnis die ZUGFeRD-Spezifikation erfüllen:
@Test public void filesInFolderCompliesZugferdSpecification() throws Exception { String folderName = PATH + "zugferd10"; File folder = new File(folderName); AssertThat.eachDocument() .inFolder(folder) .compliesWith() .zugferdSpecification(VERSION10) ; }
Das nächste Beispiel überprüft den Titel aller PDF-Dokumente eines Verzeichnisses, die 'pdfunit-perl' im Namen enthalten:
@Test public void validateFilteredFilesInFolder() throws Exception { File folder = new File(PATH); FilenameFilter allPdfunitFiles = new FilenameMatchingFilter(".*pdfunit-perl.*"); AssertThat.eachDocument() .inFolder(folder) .passedFilter(allPdfunitFiles) .hasProperty("Title").equalsTo("PDFUnit - Automated PDF Tests") ; }
Es gibt zwei Arten von Filtern. Der Filter FilenameContainingFilter
untersucht,
ob ein Dateiname einen bestimmten String enthält, und der Filter
FilenameMatchingFilter
wendet einen Regulären Ausdruck auf den Dateinamen an.
Wichtig: In beiden Fällen bezieht sich die Analyse des Dateinamens auf den
vollständigen Namen, d.h. auch auf den Pfad.
Deswegen sollte beispielsweise ein Regulärer Ausdruck immer mit '.*
' beginnen.