Automatische Unit Tests
Übersicht

![]() |
M0rgensternBetreff: Automatische Unit Tests |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute.
Ich wollte hier mal was reinstellen, was einige vielleicht interessant finden könnten: Eine automatisierte Testumgebung für Unit Tests. (Edit) Kleine Erklärung: Scheinbar kennen andere Leute Unit Tests eher als Modultests. Also im Prinzip geht es darum, zu prüfen, ob ein Programm sich so verhält wie man es erwartet. Dafür schreibt man dann Testfunktionen, die einfach die zu testenden Funktionen in dem Programm aufrufen und für vorgegebene Eingaben die entsprechenden Ausgaben überprüfen. Weicht eine Ausgabe von dem erwarteten Ergebnis ab, dann stimmt etwas im Programm nicht. Und mein Modul stellt halt nun Funktionen zum Prüfen zur Verfügung und lässt die Testfunktionen vollautomatisch laufen. Das ganze funktioniert folgendermaßen: Es gibt eine Klasse, den "TUnitTestProvider", die alle Funktionen zum vergleichen von Werten und Objekten bereithält. Mithilfe dieser Funktionen können in anderen Klassen Testmethoden geschrieben werden. Diese Klassen müssen alle namentlich bei dem TUnitTestProvider registriert werden. Der TUnitTestProvider ruft dann per reflection alle Testmethoden in den Klassen auf (gekennzeichnet durch ein Test__ am Anfang des Methodennamens). Die Testergebnisse werden dann in eine (oder mehrere) Dateien geschrieben. Undzwar schön formatiert. Hier ist ein Beispielcode dafür, wie Tests aussehen könnten: BlitzMax: [AUSKLAPPEN] SuperStrict Die Testergebnisse sehen dann so aus: Code: [AUSKLAPPEN] [UnitTests] ***************************** Methods in Type 'TManUnitTests' are tested. ***************************** (15 Jul 2012 - 23:58:39)
[UnitTests] Calling Test Method: Test__CheckEquality (15 Jul 2012 - 23:58:39) [UnitTests] ---------------------------- Test 'TManUnitTests.Test__CheckEquality' starts. ---------------------------- (15 Jul 2012 - 23:58:39) [UnitTests] ____________________ Test 'TManUnitTests.Test__CheckEquality' ended. ____________________ (15 Jul 2012 - 23:58:39) [UnitTests] Calling Test Method: Test__CheckUnEqual (15 Jul 2012 - 23:58:39) [UnitTests] ---------------------------- Test 'TManUnitTests.Test__CheckUnEqual' starts. ---------------------------- (15 Jul 2012 - 23:58:39) [UnitTests] An Error of the level __Loglevel: Debugging__ occured in the file: UnitTestTests.bmx. * It says: An Exception of the Type 'TestFailException' has occurred at 15 Jul 2012 - 23:58:39. -- Itself says: A Unit Test failed. -- The extern input says: Object is null although it is not supposed to be. Test failed in : TManUnitTests.Test__CheckUnEqual -- Exception ID: 1. -- The following object was used: No Object used. [UnitTests] An Error of the level __Loglevel: Debugging__ occured in the file: UnitTestTests.bmx. * It says: An Exception of the Type 'TestFailException' has occurred at 15 Jul 2012 - 23:58:39. -- Itself says: A Unit Test failed. -- The extern input says: TObjects are not equal. Expected was: A man with the name M0rgenstern has the age 22 Instance: 00BC4D78 but it was: A man with the name Sam has the age 25 Instance: 00BC4D58. Test failed in : TManUnitTests.Test__CheckUnEqual -- Exception ID: 2. -- The following object was used: No Object used. [UnitTests] An Error of the level __Loglevel: Debugging__ occured in the file: UnitTestTests. * It says: An Exception of the Type 'TestFailException' has occurred at 15 Jul 2012 - 23:58:39. -- Itself says: A Unit Test failed. -- The extern input says: Integers are not equal. Expected was: 22 but it was: 25. Test failed in : TManUnitTests.Test__CheckUnEqual -- Exception ID: 3. -- The following object was used: No Object used. [UnitTests] An Error of the level __Loglevel: Debugging__ occured in the file: UnitTestTests. * It says: An Exception of the Type 'TestFailException' has occurred at 15 Jul 2012 - 23:58:39. -- Itself says: A Unit Test failed. -- The extern input says: Objects are not equal. Expected was: M0rgenstern but it was: Sam. Test failed in : TManUnitTests.Test__CheckUnEqual -- Exception ID: 4. -- The following object was used: No Object used. [UnitTests] ____________________ Test 'TManUnitTests.Test__CheckUnEqual' ended. ____________________ (15 Jul 2012 - 23:58:39) [UnitTests] ###################################################################################################### (15 Jul 2012 - 23:58:39) Die benötigte Modulsammlung findet ihr unter folgendem Link: www.siliziumbrain.de/downloads...te.mod.zip Voraussetzung dafür, dass das ganze läuft: Threaded Build muss angeschaltet sein. Alles ist komplett (in englisch) kommentiert und sollte leicht verständlich sein. Bei Fragen oder Problemen stehe ich gerne zur Verfügung. Über eure Meinung wäre ich sehr froh. Lg, M0rgenstern |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group