Aus dem Film "Sneakers" aus dem Jahr 1992 mit Robert Redford kann ich mich noch an den Satz "no more secrets" errinern. In diesem Sinne steht dieser Eintrag unter dem Titel "no more errors".
Aufgrund einer Anfrage bin ich dazu gekommen, ein kleines Tool zu schreiben, welches eine bestehende Datenbank mit zusätzlichen Einträgen füllt. Um sicherzustelen, dass dieses Tool keinen Unfog treibt, wird die komplette Entwicklung test-getrieben durchgeführt. Das hierfür verwendete Tool ist, wer hätte es auch anders erwartet NUnit. Um von Anfang an eine saubere Trennung wischen Tests und Programm zu erhalten wurden alle Tests in eine eigene Klasse respetive eine eigene File verfrachtet.

Bevor wir überhaupt mit der Entwicklung der GUI anfangen wird zunächst all die Funktionalität im System sichergestellt. Ein sehr primitiver Test: den Connection String für die Datenbank aus der.config-Datei zu laden:
[Test]
public void CanRetrieveConnectionString()
{
Assert.IsNotNull(connectionString);
}
Dieser Test is einer der einfachsten, und einder der wichtigsten, denn klappt es hier nicht, klappt gar nichts. Un man sollte auf diese einfachen Tests wirklich nicht verzichten.
Natürlich müssen wir zum Testen auch Daten in die Datenbank pumpen, die wir später wieder entfernen müssen:
[TestFixtureSetUp]
public void FixtureSetUp()
{
// create uploader
uploader = new ManiacKeyUploader();
connectionString = uploader.ConnectionString;
// fill database with test data
//...
}
}
Natürlich wird dies alles wieder in der [TestFixtureTearDown] alles wieder aufgeräumt, schilesslich sollen am Ende ja keine Karteileichen rumliegen: Was bringt das ganze, fragt man sich jetzt?

Wie man schön sehen kann, ist einer der Test fehgeschlagen. Ganz wichtig: Es handelt sich hierbei um einen Test, der vor den letzten Änderungen fehlerfrei durchlief. D.h. man kann mit Bestimmtheit sagen, dass in den letzten 5 Zeilen Code-“nderungen der Fehler begraben liegt, der sich auf den bereits vorhandenen Code auswirkt! DIESER Fehler wäre unter "normalen" Entwicklungsbedingungen nie mehr aufgetaucht und vermutlich erst beim Produktivbetrieb aufgefallen... Welche Kosten man durch ein solches Vorgehen spart... der vermdeindliche Mehraufwand lohnt sich allemal. Wer jetzt noch immer nicht davon überzeugt ist: Das Verhältnis Produktivcode zu Testcode liegt im Moment bei 1:2 und durch das test-getriebene Vorgehen wird der ganze Code wesentlich kleiner, schöner und effektiver.
Link: www.nunit.org