Niedawno opracowałem następującą konwencję nazywania moich testów, ich klas i zawierających projekty w celu maksymalizacji ich opisów:
Powiedzmy, że testuję Settings
klasę w projekcie w MyApp.Serialization
przestrzeni nazw.
Najpierw utworzę projekt testowy z MyApp.Serialization.Tests
przestrzenią nazw.
W ramach tego projektu i oczywiście przestrzeni nazw utworzę klasę o nazwie IfSettings
(zapisaną jako IfSettings.cs ).
Powiedzmy, że testuję tę SaveStrings()
metodę. -> Wymienię test CanSaveStrings()
.
Po uruchomieniu tego testu wyświetli się następujący nagłówek:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Myślę, że to mówi mi bardzo dobrze, co testuje.
Oczywiście użyteczne jest to, że w języku angielskim rzeczownik „Testy” jest taki sam, jak czasownik „testy”.
Nazewnictwo testów nie ma ograniczeń co do kreatywności, dzięki czemu otrzymujemy pełne nagłówki zdań.
Zwykle nazwy testów będą musiały zaczynać się od czasownika.
Przykłady obejmują:
- Wykrywa (np.
DetectsInvalidUserInput
)
- Rzuty (np.
ThrowsOnNotFound
)
- Will (np.
WillCloseTheDatabaseAfterTheTransaction
)
itp.
Inną opcją jest użycie „tego” zamiast „jeśli”.
Ten ostatni oszczędza mi jednak naciśnięć klawiszy i dokładniej opisuje to, co robię, ponieważ nie wiem, czy testowane zachowanie jest obecne, ale testuję, czy tak jest.
[ Edytuj ]
Po dłuższym użyciu powyższej konwencji nazewnictwa odkryłem, że prefiks If może być mylący podczas pracy z interfejsami. Tak się składa, że klasa testowa IfSerializer.cs wygląda bardzo podobnie do interfejsu ISerializer.cs na karcie „Otwórz pliki”. Może to być bardzo denerwujące przy przełączaniu między testami, testowaną klasą i jej interfejsem. W rezultacie chciałbym teraz wybrać to na razie jako przedrostek.
Dodatkowo teraz używam - tylko dla metod w moich klasach testowych, ponieważ nigdzie indziej nie jest to uważane za najlepszą praktykę - „_” do oddzielania słów w nazwach metod testowych jak w:
[Test] public void detects_invalid_User_Input()
Uważam to za łatwiejsze do odczytania.
[ Zakończ edycję ]
Mam nadzieję, że zrodziło to kilka pomysłów, ponieważ uważam, że testy nazewnicze mają ogromne znaczenie, ponieważ mogą zaoszczędzić dużo czasu, który w innym przypadku poświęciłby na zrozumienie, co robią testy (np. Po wznowieniu projektu po dłuższej przerwie) .