Kapitel 2. Quickstart

Quickstart

Angenommen, Sie haben ein Projekt, das PDF-Dokumente erzeugt und möchten sicherstellen, dass die beteiligten Programme das tun, was sie sollen. Und angenommen, ein Test-Dokument soll genau eine Seite umfassen sowie die Grußformel Vielen Dank für die Nutzung unserer Serviceleistungen und die Rechnungssumme von 30,34 Euro enthalten. Dann testen Sie diese Anforderungen so:

use strict;
use utf8;
use warnings;

use PDF::PDFUnit;
use Test::Exception;
use Test::More;

my $resources_dir = ...;   # let it point to the base folder of your test data
my $pdfUnderTest = "$resources_dir/quickstart/quickstartDemo_en.pdf";

#
# Testcase 'has one page'
#  
lives_ok {
  AssertThat
    ->document($pdfUnderTest)
    ->hasNumberOfPages(1)
  ;
} "has one page";

lives_ok {
  my $expectedGreeting = "Vielen Dank für die Nutzung unserer Serviceleistungen";
  
  AssertThat->document($pdfUnderTest)
            ->restrictedTo(LAST_PAGE)
            ->hasText()
            ->containing($expectedGreeting)
  ;
} "has greeting";

#
# Testcase 'has expected charge'
#  
lives_ok {
  my $upperLeftX  =  172;  # in millimeter
  my $upperLeftY  =  178;
  my $width       =   20;
  my $height      =    9; 
  my $regionCharge = PageRegion->new($upperLeftX, $upperLeftY, $width, $height);
  
  AssertThat->document($pdfUnderTest)
            ->restrictedTo(LAST_PAGE)
            ->restrictedTo($regionCharge)
            ->hasText()
            ->containing('29,89')   # Let's see an error message. Correct value: 30,34
  ;
} "has expected charge";

diag $@->getMessage() if $@;
done_testing();

Die Anweisung diag $@->getMessage() if $@ sorgt dafür, dass Fehlermeldungen von PDFUnit-Java angezeigt werden. Für den provozierten Fehler im letzten Test sieht die Fehlermeldung folgendermaßen aus:

# Failed test 'has expected charge'
# at C:/.../examples_quickstart-de.t line 67.
# died: main::com::pdfunit::errors::PDFUnitValidationException=HASH(0x4055938)
# Page(s) [1] of 'C:\...\quickstartDemo_de.pdf' 
# not containing the expected text: '29,89 Euro'. Found: '30,34 Euro'.

So einfach geht's. Die folgenden Kapitel zeigen den Funktionsumfang, die Installation und typische Beispiele für die Verwendung von PDF::PDFUnit.