Generał
- Przestrzegaj tych samych standardów dla wszystkich testów.
- Wyjaśnij jasno, jaki jest każdy stan testowy.
- Sprecyzuj spodziewane zachowanie.
Przykłady
1) MethodName_StateUnderTest_ExpectedBehavior
Public void Sum_NegativeNumberAs1stParam_ExceptionThrown()
Public void Sum_NegativeNumberAs2ndParam_ExceptionThrown ()
Public void Sum_simpleValues_Calculated ()
Źródło: Standardy nazewnictwa dla testów jednostkowych
2) Rozdzielanie każdego słowa znakiem podkreślenia
Public void Sum_Negative_Number_As_1st_Param_Exception_Thrown()
Public void Sum_Negative_Number_As_2nd_Param_Exception_Thrown ()
Public void Sum_Simple_Values_Calculated ()
Inny
- Zakończ nazwy metod testem
- Zacznij nazwy metod od nazwy klasy
unit-testing
naming-conventions
użądlony
źródło
źródło
Odpowiedzi:
Jestem prawie z tobą w tym jednym człowieku. Użyte konwencje nazewnictwa to:
Czego więcej potrzebujesz od nazwy testu?
Wbrew odpowiedzi Raya nie sądzę, aby przedrostek testowy był konieczny. To kod testowy, wiemy o tym. Jeśli musisz to zrobić, aby zidentyfikować kod, masz większe problemy, kodu testowego nie należy mylić z kodem produkcyjnym.
Jeśli chodzi o długość i użycie znaku podkreślenia, jego kodu testowego , kogo to, do diabła, obchodzi? Tylko ty i twój zespół będziecie to widzieć, o ile będzie to czytelne i jasne o tym, co robi test, kontynuujcie! :)
To powiedziawszy, wciąż jestem całkiem nowy w testowaniu i blogowaniu moich przygód z nim :)
źródło
Test
i od nazwy klasy. Jeśli nazwa klasy i nazwa klasy testowej są takie same, zawsze będziemy musieli zatrzymać i odczytać ścieżkę dwóch plikówSearch Everywhere
(shift shift) lubFind a Class By Name
(CMD O). Rozumiem, że będzie to różnicować strukturę folderów lub strukturę modułów, ale kiedy czegoś szukamy, wiemy już, czego chcemy szukać. Na przykład, jeśli szukam testu, chcę ograniczyć wyszukiwanie do,test
a następnie szukać nazwy, zamiast szukać nazwy, a następnie ręcznie odfiltrować test wzrokowo. Jest to małe rozróżnienie, ale o wiele łatwiej jest „przetestować [nazwę klasy]” i mieć tylko jedno okienko wyskakujące i zmniejszyć obciążenie psychiczneWarto również przeczytać: Testy jednostek strukturalnych
na przykład
A oto dlaczego:
Podoba mi się również to podejście:
MethodName_StateUnderTest_ExpectedBehavior
Więc może dostosuj się do:
StateUnderTest_ExpectedBehavior
Ponieważ każdy test będzie już w klasie zagnieżdżonej
źródło
Zazwyczaj używam konwencji
MethodName_DoesWhat_WhenTheseConditions
, na przykład:Jednak często widzę, aby nazwa testu była zgodna ze strukturą testów jednostkowych
Który również jest zgodny ze składnią BDD / Gherkin:
który miałby nazwać test w następujący sposób:
UnderTheseTestConditions_WhenIDoThis_ThenIGetThis
tak na twój przykład:
Jednak zdecydowanie wolę umieścić najpierw testowaną nazwę metody, ponieważ wtedy testy można ułożyć alfabetycznie lub posortować alfabetycznie w polu rozwijanym elementu w VisStudio, a wszystkie testy dla 1 metody są grupowane razem.
W każdym razie lubię oddzielać główne sekcje nazwy testu podkreślnikami, a nie każdym słowem , ponieważ uważam, że ułatwia to odczytanie i przejście do sedna testu.
Innymi słowy, lubię:
Sum_ThrowsException_WhenNegativeNumberAs1stParam
lepiej niżSum_Throws_Exception_When_Negative_Number_As_1st_Param
.źródło
Nazywam swoje metody testowe tak jak inne metody przy użyciu „PascalCasing” bez podkreślników i separatorów. Opuszczam test Postfiksa dla tej metody, ponieważ nie dodaje ona żadnej wartości. O tym, że metoda jest metodą testową, wskazuje atrybut TestMethod .
Z uwagi na fakt, że każda klasa testowa powinna testować tylko jedną inną klasę, zostawiam nazwę klasy poza nazwą metody. Nazwa klasy zawierającej metody testowe nosi nazwę podobną do klasy testowanej z rozszerzeniem „Testy”.
W przypadku metod testujących wyjątki lub działania, które nie są możliwe, poprzedzam metodę testową słowem Nie można .
Moja konwencja nazywania oparta jest na artykule „Wskazówki TDD: Testowanie konwencji i wytycznych dotyczących nazewnictwa” Bryana Cooka. Uważam, że ten artykuł jest bardzo pomocny.
źródło
Pierwszy zestaw nazw jest dla mnie bardziej czytelny, ponieważ CamelCasing oddziela słowa, a podpórki oddzielają części schematu nazewnictwa.
Staram się także zawierać gdzieś „Test”, albo w nazwie funkcji, albo w otaczającej przestrzeni nazw lub klasie.
źródło
Tak długo, jak wykonasz jedną praktykę, tak naprawdę nie ma to znaczenia. Generalnie piszę pojedynczy test jednostkowy dla metody, która obejmuje wszystkie odmiany metody (mam proste metody;), a następnie piszę bardziej złożone zestawy testów dla metod, które tego wymagają. Moja struktura nazewnictwa jest więc zwykle testowa (relacja z JUnit 3).
źródło
Używam przedrostka „T” do testowych przestrzeni nazw, klas i metod.
Staram się być schludny i tworzę foldery, które replikują przestrzenie nazw, a następnie tworzę folder testów lub oddzielny projekt dla testów i replikuję strukturę produkcyjną dla podstawowych testów:
Z łatwością widzę, że coś jest testem, wiem dokładnie, do czego odnosi się oryginalny kod (jeśli nie możesz tego rozwiązać, test i tak jest zbyt skomplikowany).
Wygląda to tak samo, jak konwencja nazewnictwa interfejsów (tzn. Nie mylisz się z rzeczami zaczynającymi się od „ja”, ani z literą „T”).
Kompilacja z testami lub bez nich jest łatwa.
W każdym razie jest dobry w teorii i działa całkiem dobrze w przypadku małych projektów.
źródło