Testen: verschil tussen versies

Uit EekBoek
Naar navigatie springenNaar zoeken springen
kGeen bewerkingssamenvatting
(Layoutaanpassingen. Ik snap niet waarom de verbatim gedeelten niet altijd werken.)
Regel 1: Regel 1:
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).
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 [ -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  
 
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 ==
== 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.  
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:  
Bijvoorbeeld de inhoud van de directory t/admtest_btw:
 t/admtest_btw.t
 
t/admtest_btw/eekboek.conf
 t/admtest_btw.t
 t/admtest_btw/mutaties.eb
  t/admtest_btw/eekboek.conf
 t/admtest_btw/opening.eb
 t/admtest_btw/mutaties.eb
t/admtest_btw/relaties.eb
 t/admtest_btw/opening.eb
 t/admtest_btw/schema.dat
  t/admtest_btw/relaties.eb
 t/admtest_btw/tests.eb
 t/admtest_btw/schema.dat
 t/admtest_btw/ref/btwall1.txt
 t/admtest_btw/tests.eb
 t/admtest_btw/ref/btwall2.txt  
 t/admtest_btw/ref/btwall1.txt
 t/admtest_btw/ref/btwall2.txt  
 
De eigenlijke test file is:
 
 t/admtest_btw.t


De eigenlijke test file is
 t/admtest_btw.t
en die bevat enkel:  
en die bevat enkel:  
 our $tag = "admtest_btw";  
 
 our $dbdriver = "postgres";  
 our $tag = "admtest_btw";  
   
 our $dbdriver = "postgres";  
# SQLite cannot import
   unshift( @INC, "t" ) if -d "t";  
 unshift( @INC, "t" ) if -d "t";  
 require " admtest_common.pl";  
 require " admtest_common.pl";  


De tests.eb bevat:  
De tests.eb bevat:  
 btwaangifte --output=btwall1.txt  
 
 export --file=foo.ebz --single --nototals  
 btwaangifte --output=btwall1.txt  
 import --file=foo.ebz  
  export --file=foo.ebz --single --nototals  
 btwaangifte --output=btwall2.txt  
  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" :
 t/admtest_btw/ref/btwall1.txt
 t/admtest_btw.t ..  1..12  ok
  t/admtest_btw/ref/btwall2.txt
1 - use IPC::Run3;  ok
 
2 - writable output dir  ok
De uitvoer van "prove -b -v t/admtest_btw.t" is dan:  
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 --


De tests worden geacht rapporten te produceren die dan worden gecontroleerd aan de hand van meegeleverde referentie-rapporten. Bijvoorbeeld:
   t/admtest_btw.t ..  1..12  ok
  t/admtest_btw.t
  1 - use IPC::Run3;  ok
t/admtest_btw/eekboek.conf
  2 - writable output dir  ok
t/admtest_btw/mutaties.eb
  3 - file is present: eekboek.conf  ok
t/admtest_btw/opening.eb
  4 - file is present: schema.dat  ok
t/admtest_btw/relaties.eb
  5 - file is present: opening.eb  ok
t/admtest_btw/schema.dat
  6 - file is present: relaties.eb  ok
t/admtest_btw/tests.eb
  7 - file is present: mutaties.eb  ok
t/admtest_btw/ref/btwall1.txt
  8 - file is present: tests.eb  ok
t/admtest_btw/ref/btwall2.txt
  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:05

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 --