TDD und Unit Testing sind keine Alternativen zueinander. In jedem Projekt sollten Sie Ihren Code testen, hier führen Sie Unit Testing und Integration und System Testing durch.
TDD ist jedoch ein Entwicklungsmodell. Wie Waterfall und andere Entwicklungsmethoden ist auch TDD eine Methode. In TDD haben Sie einige grundlegende Anforderungen und Sie schreiben Komponententests, um sicherzustellen, dass die Anforderungen implementiert und funktionsfähig sind. Wenn Sie Komponententests schreiben, stellen Sie jedoch fest, dass Sie mehr Funktionen und Klassen implementieren müssen, um die Hauptanforderungen zu erfüllen. Einheitentests in diesem Zusammenhang machen andere Anforderungen klarer.
Angenommen, Sie müssen eine Anwendung schreiben, die den Namen des Computers ausgibt, auf dem die Anwendung ausgeführt wird. Zuerst schreiben Sie einen Komponententest:
[Test]
public void ProducedMessage_IsCorrect()
{
AreEqual(BusinessLibrary.ProduceMessage(), System.Environment.MachineName);
}
und dann merkt man, Sie die ProduceMessage Funktion implementieren müssen. Sie implementieren es so einfach wie es geht, so dass der Komponententest besteht. Sie schreiben die Methode so:
public string ProduceMessage()
{
return "MyComputer";
}
Dann führen Sie den Test und es besteht. Danach senden Sie Ihren Code und andere Mitglieder des Teams erhält den Code. Wenn sie den Test ausführen, schlägt der Test fehl, da Sie den Name Ihres Computers in dem Code fest codierten.
So ein paar weise Mitglied Ihres Teams ändert den Code in die richtige Form und Sie gehen weiter.
Es geht um die Auswahl von Entwicklern mit TDD-Erfahrung. Zumindest einige von ihnen sollten erfahrene TDD-Entwickler sein, denke ich.
Schauen Sie sich diesen Link über TDD vs Unit-Test: http://StackOverflow.com/Questions/1742323/Tdd-VS-Unit-Testing – dexametason
TDD ist nur Ansatz für das Design, kann es in gutem Design, aber anderen Ansatz führen kann auch. Unit Testing ist ein Weg, um Ihre Codes konsistent und einfach zu modifizieren, ist es notwendig. –
TDD sollte Ihre Designentscheidungen beeinflussen, wenn das Komponententest allein die Logik einzelner Komponenten validiert. –