Mit Moq und TDD, wo Sie anfangen sollen?
Habe ich eine server-Anwendung, und ich fragte mich, wo ich anfangen soll wenn ich die starten will Umsetzung von TDD und Verwendung von Moq.
Was gute Bücher, die ich Lesen konnte, über das Thema, die nicht so "web-orientierte"?
Ich habe Fragen zu der Sache, wie:
Sollte ich verspotte jeden Gegenstand den ich testen will, oder nur die, die ich nicht umsetzen können, wie text-Autoren?
Mein server braucht viel setup bevor Sie es tatsächlich tun kann was ich will, um zu testen, sollte ich einfach Stopfen, das in ein [TestInitialize]
Funktion?
Wie soll ich die Kette meiner tests, wenn ich will, um zu testen, tiefere Funktionalität?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Empfehle ich zwei Bücher: Test-Driven Development by Example, von Kent Beck. Es ist ein exzellentes Buch über TDD, die ich besonders genießen, weil er Spaziergänge durch ein Beispiel, das ist sehr nützlich, um ein Gefühl für den Rhythmus und dachte Prozess. Auf der anderen Seite, es ist ein wenig Licht auf Spott. Für die, die ich Lesen würde Die Kunst des Unit Testing von Roy Osherove. Wie der Titel schon sagt, es ist nicht konzentriert auf TDD-spezifisch, sondern eher, wie man gute unit-tests; er hat eine gute Abdeckung auf mocks und stubs.
In Bezug auf was sollten Sie verspotten die Idee der Spott ist Ihnen zu erlauben, zu isolieren, die Klasse/Funktion, die Sie testen aus der übrigen Umgebung, so dass Sie testen können, sein Verhalten gegen ein fake-Umgebung, die Sie Steuern. In diesem Rahmen sollten Sie nicht verspotten die Klasse, sondern eher Dinge, es hängt davon ab.
Ein triviales Beispiel: wenn Sie hatte eine Klasse mit einem Logger, der Prüfung, dass die Klasse ", schreibt" an den logger würde sehr schmerzhaft sein, und könnte gehören Dinge wie die überprüfung, ob der logger geschrieben hat, in eine text-Datei. Dies ist nicht eine gute Idee, auf vielen Ebenen - beginnend mit der Tatsache, dass Ihre Klasse kümmert sich nicht darum, wie der logger macht seinen job speziell. In diesem Fall ersetzen Sie die Logger-Instanz in Ihrer Klasse mit einem Gefälschten, verspottet Logger, und Sie können dann überprüfen, dass Ihre Klasse den Aufruf der Logger an den passenden stellen, ohne sich Gedanken über das, was der logger funktioniert, genau.
Bezüglich der server-Initialisierung: ein unit-test ist in der Regel im Speicher, ohne Abhängigkeiten von der Umgebung, so dass, wenn Sie tun, TDD, sollten Sie wahrscheinlich nicht haben, das zu tun. Im Allgemeinen zu viel (alle?) code für die Initialisierung in einem unit-test ist ein schlechtes Zeichen.
Dies deutet darauf hin, dass Sie mehr auf der Suche nach Akzeptanz-tests /BDD-style tests. Ich empfehlen Ihnen diese aktuellen Artikel im MSDN Magazine auf Behavior-Driven Development mit SpecFlow und WatiN; es wird erklärt, wie Sie sich entwickeln in einem test-first-Weise durch die Entwicklung zusammen high-level-tests, die überprüfen, dass die Anwendung tut, was der Benutzer will (acceptance tests, wo Sie würden laufen, Ihre tatsächlichen server-und app), und Sie tut es, indem er kleine Stücke von code, der das tut was der Entwickler beabsichtigt (unit-tests).
Hoffe, das hilft, und happy testing!
Sie verspotten Sie nicht die Objekte, die Sie testen möchten. Wenn Sie das tun, Sie sind Tests, die verspotten, nicht Ihr Objekt! Sie müssen simulieren die Abhängigkeiten der Objekte, die Sie testen wollen.
Einer meiner Lieblings-Bücher über TDD ist Test-Driven Development By Example (Kent Beck). Ich mochte auch eine 4-Teil-Bildschirm geworfen er Tat.
Episode 1: Starter-Test (28 Minuten)
In dieser Folge nehmen wir den ersten test für die erste Funktion unserer Beispielanwendung und schneiden Sie es bis zu mehr-häufiges feedback.
Episode 2: Isolierte Tests (23 Minuten)
In dieser Folge stellen wir sicher, dass die tests nicht gegenseitig beeinflussen. Sobald die tests isoliert sind, setzen wir mehrere neue Vorgänge.
Episode 3: Großes Feature (25 min.)
In dieser Folge nehmen wir ein großes feature und schneiden Sie es bis zu mehr-häufiges feedback. Am Ende putzen wir den code zum entfernen von Doppelarbeit und machen den code leichter zu Lesen.
Episode 4: Finishing (20 Minuten)
In dieser Folge beenden wir die Funktionalität der Beispielanwendung und bereiten es für die Nutzung durch andere. Design-Entscheidungen wurden aufgeschoben früher in der Entwicklung sind nun klarer. Die Serie schließt mit einer Zusammenfassung der lehren aus all den Episoden.
Sollte Ihr code weiter entwickeln durch die Entwicklung von tests, wenn Sie möchten, um die Folgen der TDD-Muster. Sie würde gehen für single-Verantwortung und wie bereits erwähnt mock/stub alle Abhängigkeiten der Klasse, die Sie testen wollen hat. Auf diese Weise können Sie die Einstellungen dummy-Daten und der erwarteten Verhaltensweisen, die auf Abhängigkeiten und sich keine sorgen um Sie weiter nutzen zu können.
Dies ist eine kurze Einführung: http://www.agiledata.org/essays/tdd.html leider habe ich keine spezifischen Titeln kann ich aus eigener Erfahrung empfehlen.
Lesen, dies kann auch nützlich sein, zum du zu erhalten begannen: http://stephenwalther.com/blog/archive/2008/06/12/tdd-introduction-to-moq.aspx