quadro di prova per il [lingua qui]
-
21-08-2019 - |
Domanda
Sto cercando un framework di test per introdurre test automatizzati per una lingua senza molto supporto di prova . Per quanto posso capire, ho bisogno di un quadro che è in grado di eseguire le prove di VDF utilizzando una qualche forma di protocollo. Avrei preferito spendere i miei test di scrittura tempo di quanto la scrittura di codice VDF per interfacciarsi con il framework di test, in modo da un protocollo leggero è molto preferito.
sottile con Fitnesse sembra essere un bel candidato, ma mi interessa in tutti raccomandazioni.
Essere in grado di utilizzare lo stesso framework di test attraverso i linguaggi di programmazione sarebbe un ulteriore bonus.
Soluzione
Questo presuppone che si sta lavorando a livello di API. Se ho letto male, e si sta lavorando a livello di interfaccia grafica, si è più portati a considerare qualcosa come selenio o watir.
Avete pensato di scrivere il proprio framework di test semplice che genera risultati TAP (il protocollo di prova nulla) - allora l'analisi che, con macinatura o TAP2HTML
?Scherzi a parte, l'uscita TAP è simile al seguente:
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.
(Se è morto dopo il passaggio 5, il 1..7 avrebbe detto qualcosa che non va)
L'uscita è ASCII dritto. Avrete, fondamentalmente, sono due globali, numTestsTotal e numTestExecuted, e scrivere le funzioni in questo modo:
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++; }
Si scrive il codice regolare in una libreria, allora la vostra applicazione di test includono la biblioteca e il modulo di test.
È possibile sovraccaricare eq per ogni tipo di valore, e scrivere è quello di confrontare le matrici, ecc.
Vedere documentazione su TAP: http://testanything.org/wiki/index.php/Main_Page
Sì, si potrebbe sostenere che eq () dovrebbe "solo" call OK (). Oppure si potrebbe inserire i risultati attesi e reali in uscita. Fino a voi.
In ogni caso, ci sono un sacco di parser TAP e interpreti per altri linguaggi imperativi.