Tests

From A-Eskwiki
Revision as of 23:27, 4 December 2017 by Timb (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

We hebben een systeem voor testing zelf gebouwd omdat alle standaard PHP-oplossingen niet bepaald gebruiksvriendelijk zijn. Tests worden uitgevoerd op de vm-www-debug, dus ze passen ook de debugdatabase aan.

Om tests te runnen

Als je code hebt geschreven, is het de bedoeling dat je test dat er niets stukging. Dit doe je met ./manage test in je wwwdebug/www-map.

Om tests te maken

Maak in scripts/test een php-bestand waarvan de naam begint met test, zoals bijvoorbeeld test_periodes.php. Stop hier functies in die code executeren (bijvoorbeeld function test_voorbeeld() { ... }, en een statement daaronder new FunctieTest('test_voorbeeld');. Een test telt als gefaald dan en slechts dan als er een error / exception is gebeurd. (Overigens telt die()/exit() ook als error, want dat wil je ook gewoon niet gebruiken ☺).

Geavanceerdere testopzet kun je doen met behulp van klasses als UitgesteldeTest, zie de inhoud van scripts/test/init.php voor allemaal (TODO: stop dit ook in Doxygen).

Hoe de code werkt

Manage ssh't naar de vm-www-debug en roept scripts/runTests.php aan. Dit is een wrapper om scripts/test/init.php, die allerlei testinitialisatie doet, zoals WhosWho4 inladen en de testklassen. Vervolgens worden alle bestanden in script/test/ ingeladen die aan het bovengenoemde formaat voldoen, en dan een voor een de tests uitgevoerd. Met behulp van een hoop PHP-magie worden alle excepties en errors opgevangen door de TestRunner-klasse, en aan het einde van alle tests wordt een mooi overzicht van testresultaten gegenereerd.