Testen
Het is ./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).
prove [ -l | -b ] [ -v ] t/testnaam.t
De IVP tests zijn dus 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: 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";
# SQLite cannot import
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" : 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 All tests successful.
Files=1, Tests=12, ... Result: PASS --
De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten. Bijvoorbeeld:
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