Ich weiß, dass dies eine sehr alte Frage ist, aber ich möchte meine Erfahrung dort hinzufügen. Ich habe kürzlich die Gewohnheit, Unit-Tests durchzuführen, von separaten Projekten auf dasselbe geändert.
Warum?
Erstens neige ich sehr dazu, die Struktur des Hauptprojektordners mit dem Testprojekt gleich zu halten. Wenn ich also eine Datei unter Providers > DataProvider > SqlDataProvider.cshabe, erstelle ich in meinen Unit-Test-Projekten die gleiche Struktur wieProviders > DataProvider > SqlDataProvider.Tests.cs
Aber nachdem das Projekt immer größer wird und Sie Dateien von einem Ordner in einen anderen oder von einem Projekt in einen anderen verschieben, wird es sehr mühsam, diese mit Unit-Test-Projekten zu synchronisieren.
Zweitens ist es nicht immer sehr einfach, von der zu testenden Klasse zur Unit-Test-Klasse zu navigieren. Dies ist für JavaScript und Python noch schwieriger.
Vor kurzem habe ich angefangen zu üben, dass ich mit jeder einzelnen Datei, die ich erstellt habe (zum Beispiel SqlDataProvider.cs), eine andere Datei mit dem Suffix Test erstellt, wie zSqlDataProvider.Tests.cs
Am Anfang scheint es, als würde es Dateien und Bibliotheksreferenzen aufblähen, aber auf lange Sicht werden Sie das Moving-File-Syndrom auf den ersten Blick beseitigen und außerdem sicherstellen, dass jede einzelne Datei, die getestet werden soll, eine Paardatei hat mit .TestsSuffix. Sie können einfach in die Testdatei springen (weil sie nebeneinander liegt), anstatt durch ein separates Projekt zu schauen.
Sie können sogar Geschäftsregeln schreiben, um das Projekt zu durchsuchen, eine Klasse zu identifizieren, die keine .Tests-Datei enthält, und diese dem Eigentümer zu melden. Außerdem können Sie Ihrem Testläufer leicht mitteilen, welche .TestsZielklassen er haben soll.
Insbesondere für Js und Python müssen Sie Ihre Referenzen nicht aus einem anderen Pfad importieren. Sie können einfach denselben Pfad der zu testenden Zieldatei verwenden.
Ich verwende diese Praxis für eine Weile und denke, dass es ein sehr vernünftiger Kompromiss zwischen Projektgröße und Wartbarkeit und Lernkurve für Neulinge im Projekt ist.