Testen
Tijdens het bouwen van EekBoek is de opdracht "./Build test" die de tests draait. Dit testproces omvat het uitvoeren van alle t/*.t files (dus alle files met .t extensie in de t directory). Een enkele test kan worden gedraaid met de opdracht:
prove [ -l | -b ] [ -v ] t/testnaam.t
De IVP tests zijn t/91_ivp_sqlite.t en t/92_ivp_postgres.t . Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp
Test framework
Er is een test framework waarmee het eenvoudig is om functionele tests uit te voeren. Je zet de bekende vier bestanden in een directory, voegt een bestandje "tests.eb" toe en het framework zorgt ervoor dat de administratie wordt aangemaakt en de tests gedraaid. De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten.
Bijvoorbeeld de inhoud van de directory t/admtest_btw:
t/admtest_btw.t t/admtest_btw/eekboek.conf t/admtest_btw/mutaties.eb t/admtest_btw/opening.eb t/admtest_btw/relaties.eb t/admtest_btw/schema.dat t/admtest_btw/tests.eb t/admtest_btw/ref/btwall1.txt t/admtest_btw/ref/btwall2.txt
De eigenlijke test file is:
t/admtest_btw.t
en die bevat enkel:
our $tag = "admtest_btw"; our $dbdriver = "postgres"; unshift( @INC, "t" ) if -d "t"; require " admtest_common.pl";
De tests.eb bevat:
btwaangifte --output=btwall1.txt
export --file=foo.ebz --single --nototals import --file=foo.ebz btwaangifte --output=btwall2.txt
De aangemaakte rapporten worden vergeleken met de referentie-rapporten:
t/admtest_btw/ref/btwall1.txt
t/admtest_btw/ref/btwall2.txt
De uitvoer van "prove -b -v t/admtest_btw.t" is dan:
t/admtest_btw.t .. 1..12 ok 1 - use IPC::Run3; ok 2 - writable output dir ok 3 - file is present: eekboek.conf ok 4 - file is present: schema.dat ok 5 - file is present: opening.eb ok 6 - file is present: relaties.eb ok 7 - file is present: mutaties.eb ok 8 - file is present: tests.eb ok 9 - initialise database ok 10 - running tests ok 11 - verification: btwall1.txt ok 12 - verification: btwall2.txt ok ok All tests successful.
Files=1, Tests=12, ... Result: PASS --