Ich sehe den Nutzen von TDD, und ich versuche zu lernen, wie man meinen Kopf darum wickelt. Ich lese auch mehr über DDD und möchte beide auf meine Software-Projekte anwenden.Wie weit sollten Sie TDD anwenden?
Ich habe ein paar "Hands on" Programmierbücher gekauft (von "hands on" meine ich diejenigen, die eine echte Weltanwendung mit echten Lösungen im Gegensatz zu kleinen Schnipsel diskutieren) und ich habe bemerkt, dass sie typischerweise anfangen zu definieren die "Infrastruktur" -Schicht der Anwendung in traditioneller Code-First-Mode, im Gegensatz zur Verwendung von TDD; Beide Bücher geben sich alle Mühe, um zu diskutieren, wie gut TDD ist und wie die Fallstudie es nutzen wird.
Zum Beispiel in einem der Bücher, ASP.NET 3.5 Social Networking entwickelt das gesamte zweite Kapitel enthält eine Logging-Wrapper-Klasse, E-Mail-Wrapper-Klasse, Cache und Session-Wrapper-Klassen (und die dazugehörigen Schnittstellen) alle ohne Berührung nach einem Einzeltest. Ein anderes Buch, .NET Domain Driven Design mit C#: Problem, Design, Lösung tut ähnlich, und erstellt eine Basisklasse und Repository-Framework Code-zuerst vor sogar auf den "echten" Code zu berühren.
Ich verstehe, dass Sie die tatsächliche Logik und Funktionalität Ihrer Domain-Klassen testen sollten. Ich hatte gedacht, dass der "do not plumbing" Code nur auf Code angewendet wird, den Sie nicht geschrieben haben (zB integrierte .NET Klassen), aber was ich lese scheint darauf hinzuweisen, dass Sie nur den Code testen sollten Das hat tatsächlich mit Ihrer Anwendung zu tun und nicht mit den Klempnerarbeiten, die Sie schreiben, um eine Grundlage zu schaffen.
Ist dies eine akzeptable Art der Anwendung von TDD?
Das wäre der Punkt der Komponententests, ja. Der Sinn von TDD liegt jedoch darin, Ihre Tests das Design vorantreiben zu lassen. Der Entwurf verbessert sich tatsächlich, wenn Sie Ihre Tests zuerst schreiben, weil Sie dadurch testbaren Code entwickeln und Sie müssen über das Design auf systematische Weise nachdenken, bevor Sie mit dem Schreiben beginnen. – tvanfosson
Und stell dir vor, wenn du dem Link gefolgt wärst, hättest du gesehen, dass ich es sehr ausführlich gesagt habe und genau das gesagt habe. –
Obwohl ich tatsächlich TDD als eine strengere Spezifikation Methode sehe. –