Assertions
Um ein Programm testen zu können, bietet »Test::Unit« eine Vielzahl so genannter Assertions (Behauptungen) an. Das sind einfache Methoden, die überprüfen, ob eine Annahme wahr ist. Wird eine der Annahmen nicht erfüllt, gibt das Test-Framework einen Fehler aus. Wichtige Assertions sind:
- »assert(boolean)«
- »assert_equal(expected, actual)«
- »assert_nil(object)«
- »assert_raise(*args) { block }«

|
Abbildung 1: Schematischer Aufbau eines Unit-Tests. Die Testsuite beinhaltet eine weitere Sammlung Testsuite 1 und einen Testfall Testcase.
|

|
Abbildung 2: Der Konsolen-Testrunner gibt seine Ergebnisse im Textformat aus und dokumentiert dabei jeden erfolgreichen Test mit einem Punkt.
|
Die Methode »assert_raise« erwartet als Argumente die Ausnahmen (Exceptions), die der Block bei der Ausführung auslöst. Allen Assertions lässt sich als letztes Argument ein erklärender Text übergeben, der im Fehlerfall angezeigt wird, zum Beispiel »assert(nil, "der Wert ist nicht richtig")«.
Zu fast allen Assertions gibt es auch das Gegenteil der Bedingung, zu »assert_equal« also beispielsweise »assert_not_equal«. Natürlich sind die meisten Assertions, die spezielle Bedingungen überprüfen, auch durch ein einfaches »assert« ersetzbar. Als Parameter dient in diesem Fall der entsprechende Vergleich, also zum Beispiel »assert(1==1)« statt »assert_equal(1,1)«. Allerdings fördern die spezialisierten Assertions die Lesbarkeit sowohl des Code als auch der Testergebnisse. Eine komplette Auflistung aller Assertions findet sich in der API-Dokumentation von »Test::Unit« unter[1].
Mit diesen Assertions kann der Testcode das Fakultätsprogramm überprüfen. Wichtig ist dabei, immer auf Sonderfälle hin zu untersuchen, in diesem Fall die Eingabe von negativen Werte, Fließkommazahlen oder Text. Die Anweisung »assert_nil(f.calc(-1))« beispielsweise überprüft, ob das Programm für negative Eingabewerte richtigerweise kein Ergebnis zurückgibt. Den gesamten Beispielcode zeigt Listing 1.
Setup, Teardown und Fixtures
Damit ein Test automatisiert ablaufen kann und reproduzierbare Ergebnisse liefert, sollte er nicht auf echten veränderlichen, sondern auf fixen Datensätzen beruhen. Solche unveränderlichen Daten, aber auch damit initialisierte Objekte heißen Fixtures. Der Programmierer definiert sie direkt in der Testdatei oder in separaten Files. Wichtig ist nur, dass die Datenquelle verfügbar und schnell genug ist, damit das Einlesen der Daten die Tests nicht beeinträchtigt. E

|
Abbildung 3: Der GTK-2-Testrunner zeigt einen Fehler an und gibt detaillierte Informationen aus: Das getestete Programm hat eine ungültige URL verwendet.
|
Ruby führt vor jedem Test die Methode »setup« aus, die sich daher für die Vorbereitung häufig verwendeter Fixtures anbietet. Falls nötig hilft die Methode »teardown« benutzte Testdatenquellen und Ressourcen wieder sauber zu schließen.
| Whitepaper |
|
Usage Landscape Enterprise Open Source Data Integration
Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.
Download PDF (Registrierung erforderlich)
|
|
Daten Migration - Eine Publikation von Bloor Research
Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|