2012-06-12 10 views
5

Ich habe angefangen, eine JavaScript-Anwendung als persönliches Projekt zu schreiben. Ich hoffe, Unit Tests für dieses Projekt zu lernen und zu verwenden. Ich habe nicht viel Erfahrung in Komponententests, aber ich habe gelesen, dass Jasmine wäre eine gute Bibliothek, um mir dabei zu helfen, dies zu erreichen.JavaScript entwickeln - Wann sollte ich Komponententests starten?

Mit dem gesagt, ich war ein wenig übereifrig in meinem ersten Coding Spree. Ich hatte eine Idee und bin damit gelaufen. Daher war und ist die Struktur meiner Bewerbung nicht so, wie ich es vorziehen würde. Dies hat mich auf den Weg vieler, großer Refactors geführt. Ich habe festgestellt, dass Refactoring in einer schwach typisierten Sprache mich besonders anfällig für Bug-Reentrance macht.

Die Tatsache, dass ich zurückgehen und Fehler beheben muss, die ich wieder eingeführt habe, macht mich nach Einheitstests sehnen. Die Tatsache, dass ich die Grundlagen meiner Codebasis so sehr nachbearbeite, lässt mich jedoch immer noch zögern. Ich möchte keine Komponententests für mein Projekt erstellen, um dann zu entscheiden, dass mehr Umstrukturierungen erforderlich sind (die meine Tests über den Punkt "Fehler korrigieren" hinausführen).

Ist das ein gemeinsames Problem? Ich habe das Gefühl, dass es einen Zeitpunkt geben wird, an dem meine 'Foundation' stabil genug sein wird, um Tests dafür zu schreiben ... aber das macht die Tests weniger attraktiv.

+2

Ich fühle, dass dies auf [programmers.se] gehört. – zzzzBov

Antwort

4

Ich würde in Betracht ziehen, Ihre aktuelle Codebasis als "experimentell" oder als "Prototyp" zu behandeln - wie in etwas, das Sie größtenteils verwerfen würden.

Wenn Sie vorhaben, Ihre Codebase umzuformen, ist es wahrscheinlich eine gute Idee, Komponententests entweder vor dem Umgestalten oder nach dem umgestalteten Code einzuführen.

Die Vorteile des Schreibens von Tests für die aktuelle Codebasis liegen auf der Hand: Sie können Ihre refactored Codebase gegen sie ausführen, um die Funktionalität zu überprüfen. Wahrscheinlich werden Sie Ihre Tests während des Refactorings etwas umstrukturieren müssen, aber das ist normal.

Was Sie beim Überschreiben der Tests nicht tun sollten, ist sie zu löschen. Versuchen Sie, alle endgültigen Aussagen in jedem Ihrer Tests gleich zu halten, während Sie ersetzen, wie der Test sonst funktioniert. Auf diese Weise sollten Sie in der Lage sein, zu verfolgen, was Sie besser testen, und dass die neue Funktionalität immer noch die gleiche Aufgabe erfüllt.

Natürlich, wenn Sie Ihren ursprünglichen Code in einer nicht-OO Mode geschrieben haben, kann es schwierig sein, es gut zu testen. In diesem Fall würde ich vorschlagen, entweder Tests auf höherer Ebene (Funktionstests) für den ursprünglichen Code zu schreiben oder den refaktorierten Code mit einem TDD-Ansatz zu schreiben.

Mit Funktionstests können Sie eine Testabdeckung für die Hauptfunktionalität Ihrer Anwendung erstellen. Sie werden nicht so feinkörnige Tests wie mit Komponententests haben, aber Sie könnten die Tests einfacher schreiben und müssten sie am Ende nicht so viel modifizieren. Sie könnten hierfür ein Tool wie Selenium verwenden.

Mit dem TDD-Ansatz hätten Sie wahrscheinlich am wenigsten Arbeit. Sie würden eine gute Testabdeckung für den neu geschriebenen Code sicherstellen, aber Sie müssten den Code manuell überprüfen, genauso wie der alte Code.

Verwandte Themen