Testen: verschil tussen versies
(Toevoegingen prove en formattering) |
(Uitleg IVP) |
||
Regel 5: | Regel 5: | ||
Prove is een command-line tool voor het draaien van tests tegen een bepaald test harnas. Kijk op <tt><b>man prove</b></tt> voor de mogelijkheden en de opties. | Prove is een command-line tool voor het draaien van tests tegen een bepaald test harnas. Kijk op <tt><b>man prove</b></tt> voor de mogelijkheden en de opties. | ||
De IVP tests zijn <tt><b>t/91_ivp_sqlite.t</b></tt> en <tt><b>t/92_ivp_postgres.t</b></tt>. Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp . | De installatie verificatie procedure (IVP) zijn de tests die EekBoek testen in administratieve zin en functionele zin. Met andere woorden, als de IVP geslaagd is, dan zal EekBoek ook functioneel correct werken, behoudens nog niet ontdekte bugs. De IVP tests zijn <tt><b>t/91_ivp_sqlite.t</b></tt> en <tt><b>t/92_ivp_postgres.t</b></tt>. Beide files maken gebruik van gemeenschappelijke code in 90_ivp_common.pl en data in t/ivp . | ||
== Test framework == | == Test framework == |
Versie van 22 jan 2011 20:31
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
Prove is een command-line tool voor het draaien van tests tegen een bepaald test harnas. Kijk op man prove voor de mogelijkheden en de opties.
De installatie verificatie procedure (IVP) zijn de tests die EekBoek testen in administratieve zin en functionele zin. Met andere woorden, als de IVP geslaagd is, dan zal EekBoek ook functioneel correct werken, behoudens nog niet ontdekte bugs. 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 --