2008-09-17 23 views
14

Jakie są najlepsze konwencje nazwania zestawów testowych w .NET (lub jakimkolwiek innym języku lub platformie)?.NET Testowanie konwencji nazewnictwa

Chodzi mi głównie podzielone między te opcje są (proszę podać innym!):

  • Company.Website - projektu
  • Company.Website.Tests

lub

  • Company.Website
  • Company.WebsiteTests

Problem z pierwszego rozwiązania jest to, że wygląda .Tests są sub-namespace na miejscu, podczas gdy tak naprawdę są bardziej równolegle w moim umyśle. Co się stanie, gdy pojawi się nowa pod-przestrzeń nazw, np. Company.Website.Controls, gdzie powinienem umieścić testy dla tego obszaru nazw?

Może to być nawet: Tests.Company.Website i Tests.Company.Website.Controls, i tak dalej.

+2

Dlaczego to jest zamknięte? Cała "oparta na opiniach" odpowiedź jest wciąż odpowiedzią, w której użytkownicy mogą przeglądać listę opcji i wybrać to, co uważają za najlepsze dla nich. –

Odpowiedz

18

pójdę z

* Company.Website - the project 
* Company.Website.Tests 

Krótka powód i odpowiedź jest prosta, badania i projekt są połączone w kodzie, dlatego powinna ona dzielić nazw.

Jeśli chcesz podzielić kod i testowanie w rozwiązaniu, masz taką opcję. na przykład można skonfigurować rozwiązanie z

-code Folder

  • Company.Website

-Tests Folder

  • Company.Website.Tests
+5

Nie musisz też dodawać używania dla przestrzeni nazw Company.Website droga. –

13

Osobiście pójdzie z

Company.Tests.Website

ten sposób można mieć wspólne testy nazw i projektów wewnątrz niego, po takiej samej strukturze jak rzeczywiste projektu.

7

Rzeczywiście mam alternatywny równoległy katalog główny.

Tests.Company.Website

Działa ładnie ujednoznaczniania rzeczy, gdy masz nowych nazw sub.

+4

Dlaczego upadek? Czy krytyk może to rozwinąć? Jest tak dobry, jak każde inne proponowane rozwiązanie - i ma rację. –

+0

Powoduje to jednak problemy z przywoływanymi nazwami. Czasami jest to bóle głowy, dlaczego szukam SO ze względu na sugerowany sposób robienia tego .. (nie głosowałem w dół) – ppumkin

0

zwykle wymienić projekty testowe projektowe testów dla zwięzłości w Solution Explorer i używam Company.Namespace.Tests dla nazw.

5

Jestem wielkim fanem strukturyzacji nazw testową takiego:

Company.Tests.Website.xxx

Company.Tests.Website.Controls

Jak ty , Myślę o testach jako równoległej strukturze przestrzeni nazw do głównego kodu, a to zapewnia to.Ma też tę zaletę, że skoro nazw wciąż zaczyna się od nazwy firmy nie powinna mieć żadnych kolizji nazewnictwa z 3rd bibliotek stron

0

Wolę iść z:

Company.Website.Tests

Nie dbam o żadne pod-obszary nazw, takie jak Company.Website.Controls, wszystkie testy przechodzą do tej samej przestrzeni nazw: Company.Website.Tests. Nie chcesz, aby twoje przestrzenie nazw testowych miały się równać z resztą kodu, ponieważ po prostu sprawia, że ​​przestrzeń nazw refaktoryzacji zajmuje dwa razy więcej czasu.

0

Wolę Company.Website.Spec i zwykle mają jeden projekt testowy za rozwiązanie

0

Śledzimy osadzonego podejście:

Company.Namespace.Test 
Company.Namespace.Data.Test 

ten sposób testy są zbliżone do kodu, który jest badany, bez konieczności przełączania się pomiędzy projektami lub wyszukiwania odwołań w celu zapewnienia, że ​​istnieje test obejmujący daną metodę. Nie musimy też utrzymywać dwóch odrębnych, ale identycznych hierarchii.

Możemy również przetestować różne części kodu, gdy ulepszamy i rozwijamy.

Na początku wydaje się trochę dziwny, ale w długim okresie zadziałało dla nas naprawdę dobrze.

1

I też wolą "Testy" poprzedzające rzeczywistą nazwę zespołu tak, aby łatwo było zobaczyć wszystkie moje zespoły testów jednostkowych wymieniane alfabetycznie razem, gdy wybiorę je masowo, aby pobrać je do NUNit lub jakiejkolwiek szelki testowej, której używasz.

Więc jeśli strony były nazwa mojego roztworu (i zespołów), proponuję -

Tests.Website.dll, aby przejść wraz z rzeczywistą montażu kodu Website.Dll

0

Z MVC zaczyna być rzeczywistością w świecie programowania sieci .net, zacznę myśleć w tym kierunku. Pamiętaj, że M, V i C są odrębnymi składnikami, więc:

  • Company.Namespace.Strona internetowa
  • Company.Namespace.Website.Core
  • Company.Namspance.Website.Core.Tests
  • Company.Namespace.Website.Model
  • Company.Namespace.Website.Model.Tests

Strona jest twoim lekkim widokiem. Rdzeń zawiera kontrolery, pomocników, interfejsy widoków itp. Testy Core Core są testami dla wspomnianego Core. Model jest dla Twojego modelu danych. Fajne jest to, że testy modelu mogą zautomatyzować testy specyficzne dla bazy danych.

Może to być przesada dla niektórych osób, ale uważam, że pozwala mi to dość łatwo oddzielić uwagi.

Powiązane problemy