2009-05-12 8 views
3

Ich bin auf der Suche nach einem Test Framework für die Einführung von automatisierten Tests für a language without much test support. Soweit ich das verstehe, brauche ich ein Framework, das in der Lage ist, die VDF-Tests mit einer Art von Protokoll auszuführen. Ich würde viel lieber meine Zeit damit verbringen, Tests zu schreiben, als VDF-Code zu schreiben, um mit dem Testframework zu interagieren, daher ist ein leichtgewichtiges Protokoll sehr zu bevorzugen.Test Framework für [Sprache hier einfügen]

Slim with Fitnesse scheint ein netter Kandidat zu sein, aber ich interessiere mich für alle Empfehlungen.

Die Möglichkeit, das gleiche Testframework in verschiedenen Programmiersprachen zu verwenden, wäre ein zusätzlicher Bonus.

Antwort

4

Dies setzt voraus, dass Sie auf der API-Ebene arbeiten. Wenn ich es falsch lese und Sie auf der GUI-Ebene arbeiten, sind Sie eher geneigt, etwas wie Selen oder Watir zu betrachten.

Haben Sie darüber nachgedacht, Ihr eigenes einfaches Testframework zu schreiben, das TAP-Ergebnisse (das test anything protocol) ausgibt - und das dann mit grind oder TAP2HTML analysiert?

Im Ernst, sieht TAP Ausgabe wie folgt:

 
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. 

(Wenn es nach dem Schritt 5 gestorben, die 1..7 würde Ihnen sagen, etwas falsch)

Der Ausgang ist gerade ASCII. Sie müssen grundsätzlich zwei Globals, numTestsTotal und numTestExecuted und Schreibfunktionen wie folgt aus:

 
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++; 
} 

Sie schreiben den regulären Code in einer Bibliothek, dann Test-App sind die Bibliothek und das Testmodul.

Sie können eq Überlastung für jede Art von Wert, und Schreiben Arrays vergleichen usw.

siehe Dokumentation auf TAP: http://testanything.org/wiki/index.php/Main_Page

Und Test::More

Ja, könnte man argumentieren, dass eq() sollte "nur" ok() aufrufen. Oder Sie könnten erwartete und tatsächliche Ergebnisse in die Ausgabe einfügen. Wie du willst.

Wie auch immer, es gibt viele TAP Parser und Interpreter für mehr Imperativ-Sprachen.

+0

Autsch. Matt, du musst deine Formatierung reparieren. –

Verwandte Themen