A Rails/Werkzeug bestimmte Version: How deep are your unit tests?BDD mit Gurke und rspec - wann ist das redundant?
Im Moment schreibe ich zur Zeit:
- Gurke Funktionen (Integrationstests) - diese Prüfung gegen die HTML/JS, die von unserer App zurückgegeben wird, aber testet manchmal auch andere Dinge, wie Anrufe an Drittanbieter-Dienste.
- RSpec Controller Tests (Funktionstests), ursprünglich nur, wenn die Controller eine sinnvolle Logik haben, aber jetzt mehr und mehr.
- RSpec Modelltests (Unit-Tests)
Manchmal ist dies unbedingt erforderlich; Es ist erforderlich, das Verhalten im Modell zu testen, das für den Endbenutzer nicht vollständig offensichtlich oder sichtbar ist. Wenn Modelle komplex sind, sollten sie definitiv getestet werden. Aber zu anderen Zeiten scheinen mir die Tests überflüssig. Testen Sie zum Beispiel die Methode foo
, wenn sie nur von bar
aufgerufen wird und bar
getestet wird? Was ist, wenn bar
eine einfache Hilfsmethode für ein Modell ist, das in einer Cucumber-Funktion verwendet und leicht getestet werden kann? Testen Sie die Methode sowohl in rspec als auch in Gurke? Ich habe Probleme damit, da das Schreiben von mehr Tests Zeit kostet und mehrere "Versionen" der effektiv gleichen Verhaltensweisen beibehält, was die Wartung der Testsuite zeitintensiver macht, was wiederum die Änderungen verteuert.
Kurz gesagt, glauben Sie, dass es eine Zeit gibt, in der nur das Schreiben von Gurkenfunktionen ausreicht? Oder sollten Sie immer auf allen Ebenen testen? Wenn Sie denken, dass es eine Grauzone gibt, wie hoch ist Ihre Schwelle für "dies benötigt einen funktionalen/Einheitstest". In der Praxis, was machst du zur Zeit und warum (oder warum nicht) hältst du es für ausreichend?
EDIT: Here's an example of what might be "test overkill." Zugegeben, ich konnte dies ziemlich schnell schreiben, aber es war völlig hypothetisch.
kämpfte mit * genau * das gleiche Problem. Das Zeit-Nutzen-Verhältnis zu verwalten ist manchmal schwierig. – brad
Ich bin auch neugierig darauf. Ich versuche nur herauszufinden, wie viele Controller/View-Tests wirklich notwendig sind, wenn ich eine Schicht von Cukes-Tests durch meine App laufen lasse. – wesgarrison