Starterkit Test Driven Development mit Rails

Rails macht es einem sehr leicht, Tests zu schreiben und diese regelmäßig auszuführen - geht man einen Schritt weiter und schreibt diese Tests noch bevor man die von ihnen geprüpfte Implementierung schreibt, so nennt sich das testgetriebene Entwicklung - hier ein kleines Starterkit dafür.

Wie üblich gibt es auch hier Plugins, die einem das Leben leichter machen: ZenTest ist ein Ruby Gem, welches Testsuites erzeugen kann. Das integrierte Autotest lässt nach dem Speichern einer Datei automatisch die dazugehörigen Tests laufen, so dass man gleich Feedback bekommt, ob der neue Code Fehler erzeugt oder durch läuft - also gleich erstmal installieren:

gem install ZenTest -y

und dazu noch RedGreen, welches bei erfolgreich durchlaufenen eine grüne und bei fehlerhaften Tests eine rote Ausgabe erzeugt:

gem install redgreen -y

RedGreen muss jetzt noch beim Start von Autotest eingebunden werden, was man durch das Hinzufügen einer Zeile in die Datei .autotest im Home Verzeichnis erreicht (mate ~/.autotest).

require 'autotest/redgreen'

Unter Windows muss noch die Umgebungsvariable HOME hinzugefügt werden - dies kann man unter Systemsteuerung > System > Erweitert > Umgebungsvariablen > Neu erledigen. Name der Variablen ist HOME und als Wert C:%HOMEPATH%.

Über den Befehl autotest lässt sich Autotest in der Konsole starten und alle Tests werden durchlaufen. Jetzt brauchst du nur noch Tests für deine Anwendung schreiben.

Continuous Integration

Wer noch einen Schritt weiter gehen möchte, der kann mit CruiseControl.rb nach jedem Einchecken ins SVN den gesamten Build ausführen und die Tests durchlaufen lassen. Wahlweise kann man sich damit auch per E-mail informieren lassen, wenn ein Build nicht erzeugt werden kann - sehr praktisch und einfach zu installieren, ideal wenn man mit mehreren Leuten an einem Projekt arbeitet.

iOS app for GitHub

iOctocat

ist GitHub für die Hosentasche - deine Projekte und das was dort passiert immer dabei mit deinem iPhone und iPod Touch.
Die App ist