2016-11-30 6 views
-3

Wie wird die Lösungsarchitektur des TDD-Projekts aussehen? Ich meine, wie soll ich ein Testprojekt gestalten?TDD-Lösungsarchitektur Best Practice

Ich muss ein Testprojekt für ein bereits bestehendes entwickeltes MVC-Projekt schreiben. Ich werde einige der neuen Funktionen verbessern. Dies wird das erste Mal sein, dass dieses Projekt ein neues Feature unter Verwendung des TDD-Ansatzes entwickelt. Gibt es eine Konvention, der ich folgen sollte?

Sollte ich eine separate Testanwendung erstellen, dann schreibe einige Testklasse, Methoden. Implementieren Sie dann die tatsächliche Funktionalität im selben Testprojekt oder im ursprünglichen Projekt, in dem das neue Feature implementiert wird.

Eine andere Sache, die ich wissen muss, gibt es eine bestimmte Konvention für die Benennung von Klassen, Methoden, Variable? Ich werde MS-Test verwenden und MOQ verspotten.

+0

'" Dann implementieren Sie die tatsächliche Funktionalität im selben Testprojekt oder im ursprünglichen Projekt, wo neue Funktion implementiert wird. "' - Ich verstehe überhaupt nicht, was Sie mit dieser Aussage meinen. TDD würde einfach bedeuten, dass Sie Tests haben, die die aktuelle Funktionalität validieren, dann fügen Sie Tests hinzu, um auf die neue Funktionalität zu testen (diese Tests werden anfänglich fehlschlagen, weil die neue Funktionalität noch nicht existiert), dann modifizieren Sie den Code, um ihn zu bestehen die Tests, dann Refaktor wie benötigt mit den bestandenen Tests als Baseline. Es ist nicht wirklich klar, was du hier fragst. – David

+0

Sagen wir, ich werde ein Feature schreiben, das zwei Zahlen summiert. Also schreibe ich zunächst Testfall für Summenmethode. Aber ich habe die Sum-Methode noch nicht erstellt. Also wird es scheitern. Jetzt muss ich die Summenmethode erstellen. Also jetzt, wo ich die Summenmethode erstellen werde? Im Testprojekt verschieben Sie es dann nach Abschluss des Tests oder im eigentlichen Projekt. –

+0

Sie würden die Methode erstellen, in der sie erstellt werden muss. Ich kann mir keinen Grund vorstellen, es irgendwo anders zu schaffen. Es klingt, als ob du versuchst, die Dinge künstlich zu komplizieren. – David

Antwort

4
  • Erstellen Sie neue Testlösung mit einem Testprojekt (vorgeschlagener Name für Testprojekt <OriginalProject>.Tests - dank @ReneA)
  • Fügen Sie Ihre ursprüngliche Projekt als Existing project zur Testlösung
  • auf die Referenz des ursprünglichen Projekts hinzufügen Testprojekt
  • Erstellen Sie die gleiche Ordner/Namespace-Struktur wie im ursprünglichen Projekt. Dies wird helfen, in beiden Projekten der Navigation - dank @ReneA
  • neue Test-Klasse erstellen
  • neue Testmethode hinzufügen, wo Sie eine Methode von den ursprünglichen Projekt anrufen und behaupten Ergebnisse

Zeit Vergeuden Sie nicht mit der Benennung am Anfang. Beginnen Sie, Tests zu schreiben, führen Sie sie aus. Nach wenigen Tests können Sie selbst herausfinden, welche Namenskonventionen für Ihr Projekt besser geeignet sind.

+0

Für die Benennung würde ich ein paar Richtlinien zum Starten vorschlagen, für Testprojektnamen verwenden Sie den gleichen Namen mit dem Suffix .Tests (MyProject wird von MyProject.Tests getestet). Verwenden Sie die gleiche Ordner-/Namespace-Struktur wie im Original. (MyProject.NameSpaceA wird von MyProject.Tests.NamespaceA getestet). So können Sie schnell die Testklasse für die Klasse finden, an der Sie gerade arbeiten. – ReneA

+0

Ich habe aus einem Tutorial gelesen, dass ich zuerst den Testfall schreiben muss. Es wird also fehlschlagen, da für das neu erstellte Feature keine Implementierung vorhanden ist. Dann muss ich die neuen Methoden oder den Code schreiben, wo soll ich sie schreiben? Angenommen, ich schreibe ein Feature, das zwei Zahlen summiert. Also schreibe ich zunächst Testfall für Summenmethode. Aber ich habe die Sum-Methode noch nicht erstellt. Also wird es scheitern. Jetzt muss ich die Summenmethode erstellen. So, wo ich jetzt die Summenmethode erstellen werde? Im Testprojekt verschieben Sie es dann nach Abschluss des Tests oder im eigentlichen Projekt. –