Wiem, że to bardzo stare pytanie, ale chciałbym dodać tam swoje doświadczenie. Niedawno zmieniłem nawyk testowania jednostkowego z oddzielnych projektów na ten sam.
Czemu?
Po pierwsze, staram się zachować taką samą strukturę folderów głównego projektu jak projekt testowy. Tak więc, jeśli mam plik poniżej Providers > DataProvider > SqlDataProvider.cs
, tworzę tę samą strukturę w moich projektach testów jednostkowych, takich jakProviders > DataProvider > SqlDataProvider.Tests.cs
Ale kiedy projekt staje się coraz większy, gdy przenosisz pliki z jednego folderu do drugiego lub z jednego projektu do drugiego, synchronizacja ich z projektami testów jednostkowych staje się bardzo kłopotliwa.
Po drugie, nie zawsze jest łatwo przejść od klasy do testowania do klasy testów jednostkowych. Jest to jeszcze trudniejsze w przypadku JavaScript i Python.
Niedawno zacząłem ćwiczyć, że każdy utworzony przeze mnie plik (na przykład SqlDataProvider.cs
) tworzę kolejny plik z przyrostkiem Test, np.SqlDataProvider.Tests.cs
Na początku wydaje się, że spowoduje to rozdęcie plików i odniesień do bibliotek, ale w dłuższej perspektywie na pierwszy rzut oka wyeliminujesz syndrom przenoszenia plików, a także upewnisz się, że każdy pojedynczy plik, który jest kandydatem do testowania, będzie miał plik pary z .Tests
przyrostkiem. Umożliwia łatwe przeskakiwanie do pliku testowego (ponieważ znajduje się on obok siebie) zamiast przeglądania oddzielnego projektu.
Możesz nawet napisać reguły biznesowe, aby przeskanować projekt i zidentyfikować klasę, która nie ma pliku .Tests, i zgłosić je właścicielowi. Możesz również łatwo wskazać programowi uruchamiającemu testy, aby kierował na .Tests
klasy.
Szczególnie w przypadku Js i Python nie będziesz musiał importować referencji z innej ścieżki, możesz po prostu użyć tej samej ścieżki do testowanego pliku docelowego.
Używam tej praktyki od jakiegoś czasu i myślę, że jest to bardzo rozsądny kompromis między rozmiarem projektu a łatwością jego utrzymania i krzywą uczenia się dla nowych uczestników projektu.