Max.
Linie
Max.
Linie
240
|
Kapitel 7: Rails-Anwendungen testen
Links
aber es gibt noch einen besseren. Wie wäre es, wenn Sie das Debugging völlig aus dem
Software-Entwicklungsprozess herausnehmen könnten? Die Eliminierung (oder Minimie-
rung) des Debuggings würde die Software-Entwicklung wesentlich angenehmer machen.
Zu wissen, dass Ihr Code solide ist, vereinfacht die Aufstellung von Terminplänen und
minimiert die Möglichkeit unangenehmer Überraschungen, wenn das Freigabedatum naht.
Ein proaktiver Testansatz besteht darin, die Tests zuerst zu entwickeln. Wenn Sie mit der
Entwicklung einer neuen Anwendung oder eines neuen Features beginnen, fangen Sie
damit an, darüber nachzudenken, was der Code tun soll und was nicht. Betrachten Sie das
als Teil der Spezifikationsphase, bei der Sie kein Spezifikationsdokument entwickeln, son-
dern eine Reihe von Tests, die dem gleichen Zweck dienen. Um herauszufinden, was Ihre
Anwendung tun soll, ziehen Sie die Tests zurate. Nutzen Sie sie, um die Entwicklung des
Anwendungscodes zu steuern, und (natürlich) um sicherzustellen, dass der Code richtig
funktioniert. Das wird als testgesteuerte Entwicklung (test driven development, kurz TDD)
bezeichnet: eine erstaunlich produktive Methodik der Software-Entwicklung, die von
Rails hervorragend unterstützt wird.
7.1 Zentralisierung des Anlegens von Objekten
für Testfälle
Problem
Ein Testfall (test case) enthält eine Reihe individueller Tests. Es ist für solche Tests durch-
aus üblich, dass sie gemeinsame Objekte oder Ressourcen nutzen. Statt ein Objekt für jede
Testmethode initialisieren zu müssen, wollen Sie das nur einmal je Testfall tun. Zum Bei-
spiel könnten Sie eine Anwendung besitzen, die Berichtsdaten in Dateien schreibt, und
Ihre Testmethoden müssen jeweils ein Dateiobjekt öffnen, mit dem sie arbeiten.
Lösung
Verwenden Sie die Methoden setup und teardown, um Code in Ihren Testfall aufzuneh-
men, der vor und nach jedem einzelnen Test ausgeführt werden soll. Um eine Datei mit
Schreibrechten in der
ReportTest-Klasse zur Verfügung zu stellen, definieren Sie die fol-
genden
setup- und teardown-Methoden:
test/unit/report_test.rb:
require File.dirname(__FILE__) + '/../test_helper'
class ReportTest < Test::Unit::TestCase
def setup
full_path = "#{RAILS_ROOT}/public/reports/"
@report_file = full_path + 'totals.csv'
FileUtils.mkpath(full_path)
FileUtils.touch(@report_file)
end
00____RailsKochbuch.book Seite 240 Dienstag, 3. Juli 2007 8:13 08