Hintergrund
Ich arbeite an einem Projekt mit C # .NET und habe meiner Lösung in Visual Studio gerade ein neues Komponententestprojekt hinzugefügt. So habe ich das immer gemacht:
- Erstellen Sie ein neues Unit-Test-Projekt.
- Haben Sie das Projekt einen Verweis gehören zu dem Projekt im Test .
- Gerade ist (
using
) , um das Projekt.
Ich denke, der andere Weg, wie Sie es tun könnten, wäre ...
- Erstellen Sie ein neues Unit-Test-Projekt.
- Haben Sie das Projekt einen Verweis gehören zu dem Projekt im Test .
- Machen Sie das Unit - Test - Projekt einen Namespace mit dem teilen Projekt im Test .
Frage
Gibt es eine akzeptierte Möglichkeit, dies für Projekte in der .NET-Welt zu tun, oder ist dies nur eine Meinung und es gibt nichts mehr dazu?
c#
unit-testing
tdd
visual-studio
project-structure
Schnüffeln
quelle
quelle
MethodName_StateUnderTest_ExpectedBehavior()
sind und ich sicher bin, dass Sie geeignete, nicht widersprüchliche Namen für die Testklassen finden könnten. Die eigentliche Frage ist: Wollen Sie wirklich, dass diese Typen in Ihrer Intelligenz auftauchen?Antworten:
Ihre Komponententests befinden sich in einem separaten Projekt und erfüllen eine von Ihrem Hauptcode getrennte Funktion. Daher ist es für mich am sinnvollsten, sie in einen separaten Namespace zu stellen.
Wenn Sie erwägen, sie in denselben Namespace zu setzen, um die
using
Zeile zu speichern , tun Sie dies nicht. Weniger Code ist gut, klarerer Code ist besser.quelle
Ich habe
Tests
ein paar Jahre lang Unit-Test-Projekte mit demselben Namespace wie das eigentliche Projekt verwendet (indem das Suffix im Namespace des Testprojekts manuell entfernt wurde ), ohne Probleme.Ich denke, dass dies zu einem einfacheren Code führt, daher schlage ich normalerweise vor, diesen Ansatz zu wählen. Einige der Nachteile, wie potenzielle Namespace-Konflikte, sollten beim Umgang mit einem Unit-Test-Projekt einfach nicht auftreten, da Sie dafür bereits einige Testkonventionen befolgen, z. B. das Suffixieren aller Testklassen mit
Tests
. Außerdem klingt es für mich sehr intuitiv, die Klassen und die Testklassen im selben Namespace zu haben.Einige Leute werden es für seltsam halten, aber dies sollte wirklich nicht der Fall sein, da viele Framework-Assemblys auch diese Strategie verwenden, mehrere DLLs mit Klassen in denselben Namespaces zu haben: Es sollte keine überraschende oder schlechte Sache sein an und für sich üben.
Ich denke, dass dies mehr auf den persönlichen Geschmack abzielt, daher ist es per se nicht wirklich "verantwortungsbewusst". Trotzdem ist "meine Stimme", wie oben dargelegt, zunächst, es selbst zu versuchen, und wenn Ihnen der Ansatz gefällt, versuchen Sie es.
quelle