Testen: verschil tussen versies
(Layoutaanpassingen. Ik snap niet waarom de verbatim gedeelten niet altijd werken.) |
(Verfraaiing presentatie) |
||
Regel 10: | Regel 10: | ||
Bijvoorbeeld de inhoud van de directory t/admtest_btw: | 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: | De eigenlijke test file is: | ||
t/admtest_btw.t | |||
en die bevat enkel: | 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: | 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: | 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: | 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 -- | |||
Versie van 16 jan 2011 22:41
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 --