Cela suppose que vous travaillez au niveau de l'API. Si je le lis mal, et que vous travaillez au niveau de l'interface graphique, vous êtes plus enclin à envisager quelque chose comme le sélénium ou watir. Avez-vous envisagé d'écrire votre propre cadre de test simple qui produise des résultats TAP (le protocole test quoi que ce soit) - puis l'analyse avec grind ou TAP2HTML?
Sérieusement, la sortie TAP ressemble à ceci:
1..7
ok 1 - hello world with null value returns 'hello world' string
ok 2 - hello world with bob returns 'hello, bob'
ok 3 - hello world with 123 return 'hello, 123'
ok 4 - hello world with 5K string return hello plus string
ok 5 - special characters
ok 6 - internationalization, fr
ok 7 - internationalization, ja
Looks like you failed 0 tests of 7.
(Si elle est morte après l'étape 5, la 1..7 voulez-vous dire quelque chose qui ne va pas)
La sortie est ASCII droite. Vous avez essentiellement deux globals numTestsTotal et numTestExecuted, et écrire des fonctions comme ceci:
sub ok (boolean bExpected, string comment) {
if (bExpected) {
print "ok " . numTestsExecuted . " " . comment . "\n";
}else {
print "not ok" . numTeststotal . " " . comment . "\n";
}
numTestsExecuted++;
}
sub eq(int iExpected, int iResult, string comment) {
if (iExpected==iResult) {
print "ok " . numTestsExecuted . " " . comment . "\n";
} else {
print "not ok" . numTestsExecuted . " " . comment . \n";
}
numTestsExecuted++;
}
Vous écrivez le code régulier dans une bibliothèque, votre application de test incluent la bibliothèque et le module de test.
Vous pouvez surcharger eq pour chaque type de valeur et d'écriture est de comparer les tableaux, etc.
Voir la documentation sur TAP: http://testanything.org/wiki/index.php/Main_Page
Et Test::More
Oui, on pourrait dire que eq() devrait "juste" appeler ok(). Ou vous pouvez insérer les résultats attendus et réels dans la sortie. Dépend de vous.
Quoi qu'il en soit, il existe de nombreux analyseurs et interpréteurs TAP pour les langages plus impératifs.
Ouch. Matt, tu dois corriger ta mise en forme. –