Co sprawia, że dobry test jednostkowy? [zamknięte]

Jestem pewien, że większość z was pisze wiele automatycznych testów i że napotkaliście również typowe pułapki podczas testów jednostkowych.

Moje pytanie brzmi: czy przestrzegacie jakichś zasad postępowania przy pisaniu testów, aby uniknąć problemów w przyszłości? A dokładniej: jakie są właściwości dobrych testów jednostkowych lub jak piszesz testy?

Sugestie agnostyczne języka są zachęcane.

Author: Spoike, 2008-09-14

18 answers

Zacznę od podłączenia sources - pragmatycznego testowania jednostek w Javie za pomocą JUnit (jest też wersja z C# - Nunit.. ale mam ten.. w większości jest agnostyczny. Polecam.)

Dobre testy powinny być podróż (akronim nie jest wystarczająco lepki - mam Wydruk arkusza cheatsheet w książce, że musiałem wyciągnąć, aby upewnić się, że to dobrze..)

  • automatyczny : wywoływanie testów oraz sprawdzanie wyników pod kątem zaliczenia / niepowodzenia powinno be automatic
  • dokładny : Coverage; chociaż błędy skupiają się wokół pewnych regionów kodu, upewnij się, że przetestujesz wszystkie kluczowe ścieżki i scenariusze.. Użyj narzędzi, jeśli musisz znać niesprawdzone regiony
  • powtarzalne: testy powinny dawać te same wyniki za każdym razem.. za każdym razem. Testy nie powinny polegać na niekontrolowanych paramach.
  • Independent : bardzo ważne.
    • testy powinnysprawdzać tylko jedną rzecz na raz. Wielokrotne twierdzenia są w porządku, o ile wszystkie testują jedną cechę / zachowanie. Gdy test się nie powiedzie, powinien wskazać lokalizację problemu.
    • testy nie powinny polegać na sobie - izolowane. Brak założeń co do kolejności wykonania testu. Upewnij się, że przed każdym testem "czyste konto", odpowiednio używając setup/teardown
  • Professional: na dłuższą metę będziesz miał tyle kodu testowego, co produkcyjnego (jeśli nie więcej), dlatego postępuj zgodnie z tym samym standardem dobry projekt dla Twojego kodu testowego. Dobrze przemyślane metody-zajęcia z intencją-odkrywanie imion, brak powielania, testy z dobrymi imionami itp.

  • Dobre testy również uruchomić Szybko. każdy test, który trwa ponad pół sekundy.. trzeba nad tym popracować. Im dłużej zestaw testowy trwa.. tym rzadziej będzie uruchamiany. Im więcej zmian programista będzie próbował przemycić między uruchomieniami.. jeśli coś się zepsuje.. zajmie to więcej czasu, aby dowiedzieć się, która zmiana była winowajca.

Aktualizacja 2010-08:

  • Readable : można to uznać za część profesjonalizmu-jednak nie można tego wystarczająco podkreślić. Test kwasowy polegałby na znalezieniu kogoś, kto nie jest częścią Twojego zespołu i poproszeniu go/ją, aby zorientował się w testowanym zachowaniu w ciągu kilku minut. Testy muszą być utrzymywane tak samo jak kod produkcyjny - dzięki czemu można je łatwo odczytać, nawet jeśli wymaga to większego wysiłku. Testy powinny być symetryczne (podążać za wzorcem) i zwięzłe (test pierwszy zachowanie na raz). Używaj spójnej konwencji nazewnictwa(np. styl TestDox). Unikaj zaśmiecania testu "przypadkowymi szczegółami".. zostań minimalistą.

Poza tym, większość innych to wytyczne, które ograniczają pracę przy niskich kosztach: np. "nie testuj kodu, którego nie posiadasz" (np. biblioteki DLL innych firm). Nie testuj getterów i seterów. Miej oko na stosunek kosztów do korzyści lub Prawdopodobieństwo wady.

 93
Author: Gishu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 16:39:39
  1. nie pisz wielkich testów. Jak sugeruje "jednostka" w "badaniu jednostkowym", ułóż każdą z nich jako atomową i izolowaną, Jak to możliwe. Jeśli musisz, Utwórz warunki wstępne za pomocą obiektów wzorcowych, zamiast ręcznie odtwarzać zbyt wiele typowego środowiska użytkownika.
  2. Nie testuj rzeczy, które oczywiście działają. unikaj testowania klas od zewnętrznego dostawcy, zwłaszcza tego dostarczającego podstawowe API frameworka, w którym kodujesz. Np. nie testuj Dodawanie elementu do klasy Hashtable dostawcy.
  3. rozważ użycie narzędzia do pokrycia kodu, takiego jak NCover, aby pomóc odkryć przypadki krawędzi, które musisz jeszcze przetestować.
  4. Spróbuj napisać test Przed implementacją. pomyśl o teście jako o specyfikacji, której będzie przestrzegać twoja implementacja. Cf. również behavior-driven development, bardziej specyficzna gałąź Test-driven development.
  5. Bądź konsekwentny. Jeśli piszesz tylko testy dla niektórych z Twój kod jest mało przydatny. Jeśli pracujesz w zespole, a niektórzy lub wszyscy inni nie piszą testów, to też nie jest to zbyt przydatne. Przekonaj siebie i wszystkich innych o znaczeniu (i właściwościachoszczędzających czas ) testów, lub nie przejmuj się.
 42
Author: Sören Kuklau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 15:36:26

Większość odpowiedzi tutaj wydaje się dotyczyć najlepszych praktyk w testowaniu jednostkowym w ogóle (kiedy, gdzie, dlaczego i CO), zamiast faktycznie pisać testy (jak). Ponieważ pytanie wydawało się dość specyficzne w części "jak", pomyślałem, że opublikuję to, zaczerpnięte z prezentacji" brązowej torby", którą przeprowadziłem w mojej firmie.

5 praw pisarskich Womp:


1. Używaj długich, opisowych nazw metod badawczych.

   - Map_DefaultConstructorShouldCreateEmptyGisMap()
   - ShouldAlwaysDelegateXMLCorrectlyToTheCustomHandlers()
   - Dog_Object_Should_Eat_Homework_Object_When_Hungry()

2. Napisz swoje testy w stylu Arrange/Act / Assert.

  • podczas gdy ta strategia organizacyjna jest już od jakiegoś czasu i nazwane wieloma rzeczami, wstęp z akronimu " AAA " ostatnio ma to był świetny sposób, żeby to przekazać. Aby wszystkie testy były zgodne z Styl AAA sprawia, że są łatwe do odczytania i utrzymać.

3. Zawsze dostarczaj komunikat o awarii ze swoimi twierdzeniami.

Assert.That(x == 2 && y == 2, "An incorrect number of begin/end element 
processing events was raised by the XElementSerializer");
  • prosta, ale satysfakcjonująca praktyka, która czyni ją oczywistą w Twoja aplikacja runner nie powiodła się. Jeśli nie podasz wiadomości, zazwyczaj otrzymasz coś w rodzaju "oczekiwana prawda, było fałszywe" w wyniku błędu, co sprawia, że musisz rzeczywiście iść przeczytać test, aby dowiedzieć się, co jest nie tak.

4. Skomentuj powód testu - jakie jest założenie biznesowe?

  /// A layer cannot be constructed with a null gisLayer, as every function 
  /// in the Layer class assumes that a valid gisLayer is present.
  [Test]
  public void ShouldNotAllowConstructionWithANullGisLayer()
  {
  }
    To może wydawać się oczywiste, ale to praktyka ochroni integralność Twoich testów od ludzi, którzy nie zrozumieć przyczynę badanie po pierwsze. Widziałem wiele testy zostają usunięte lub zmodyfikowane, że były w porządku, po prostu dlatego, że osoba nie rozumiała założenia, że test był sprawdzam.
  • jeśli test jest trywialny lub metoda nazwa jest wystarczająco opisowa, to może być dopuszczalne opuszczenie komentuj off.

5. Każdy test musi zawsze odwracać stan każdego zasobu, którego dotyka

  • używaj szyderstw tam, gdzie to możliwe, aby uniknąć radzenie sobie z rzeczywistością zasoby.
  • czyszczenie musi być wykonane podczas testu poziom. Testy nie mogą mieć żadnych poleganie na zleceniu wykonania.
 41
Author: womp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-06 20:18:37

Miej na uwadze te cele (zaadaptowane z książki xUnit test Patterns autorstwa Meszarosa)

  • testy powinny zmniejszać ryzyko, a nie przedstaw go.
  • Testy powinny być łatwe do przeprowadzenia.
  • testy powinny być łatwe do utrzymania jako system ewoluuje wokół nich

Kilka rzeczy ułatwiających:

  • testy powinny zawieść tylko z powodu jeden powód.
  • testy powinny sprawdzać tylko jedną rzecz
  • zminimalizuj zależności testu (nie zależności od baz danych, plików, ui itd.)

Nie zapominaj, że możesz również wykonywać testy intergracyjne ze swoim frameworkiem xUnit ale zachowaj testy intergracyjne i testy jednostkowe oddzielnie

 17
Author: Mendelt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 16:40:07

Testy powinny być izolowane. Jeden test nie powinien zależeć od drugiego. Co więcej, test nie powinien polegać na systemach zewnętrznych. Innymi słowy, przetestuj Twój kod, a nie Kod, od którego zależy Twój kod.Interakcje te można przetestować w ramach testów integracyjnych lub funkcjonalnych.

 9
Author: Haacked,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 16:51:14

Niektóre właściwości wielkich testów jednostkowych:

  • Gdy test nie powiedzie się, powinno być natychmiast oczywiste, gdzie leży problem. Jeśli musisz użyć debuggera, aby wyśledzić problem, twoje testy nie są wystarczająco szczegółowe. Posiadanie dokładnie jednego twierdzenia na test pomaga tutaj.

  • Podczas refaktoringu żadne testy nie powinny zawieść.

  • Testy powinny przebiegać tak szybko, że nigdy nie wahasz się ich uruchomić.

  • Wszystkie testy powinny przejść zawsze; nie wyniki niedeterministyczne.

  • Testy jednostkowe powinny być dobrze uwzględnione, tak jak Twój kod produkcyjny.

@Alotor: jeśli sugerujesz, że biblioteka powinna mieć tylko testy jednostkowe w swoim zewnętrznym API, Nie zgadzam się. Chcę testów jednostkowych dla każdej klasy, w tym klas, których nie wystawiam zewnętrznym rozmówcom. (Jednakże jeśli czuję potrzebę pisania testów dla metod prywatnych, to muszę refaktorować.)


EDIT: był komentarz o duplikacja spowodowana "jednym twierdzeniem na test". W szczególności, jeśli masz jakiś kod do skonfigurowania scenariusza, a następnie chcesz zrobić wiele twierdzeń na ten temat, ale masz tylko jedno twierdzenie na test, możesz powielać konfigurację w wielu testach.

Nie przyjmuję takiego podejścia. Zamiast tego używam urządzeń testowych na scenariusz . Oto przykład:
[TestFixture]
public class StackTests
{
    [TestFixture]
    public class EmptyTests
    {
        Stack<int> _stack;

        [TestSetup]
        public void TestSetup()
        {
            _stack = new Stack<int>();
        }

        [TestMethod]
        [ExpectedException (typeof(Exception))]
        public void PopFails()
        {
            _stack.Pop();
        }

        [TestMethod]
        public void IsEmpty()
        {
            Assert(_stack.IsEmpty());
        }
    }

    [TestFixture]
    public class PushedOneTests
    {
        Stack<int> _stack;

        [TestSetup]
        public void TestSetup()
        {
            _stack = new Stack<int>();
            _stack.Push(7);
        }

        // Tests for one item on the stack...
    }
}
 9
Author: Jay Bazuzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:40

To, czego szukasz, to określenie zachowań badanych klas.

  1. weryfikacja oczekiwanych zachowań.
  2. weryfikacja przypadków błędów.
  3. pokrycie wszystkich ścieżek kodu w klasie.
  4. wykonywanie wszystkich funkcji członka w klasie.

Podstawowym celem jest zwiększenie pewności siebie w zachowaniu klasy.

Jest to szczególnie przydatne przy refaktoryzacji kodu. Martin Fowler ma interesującą Artykuł dotyczący testów na jego stronie internetowej.

HTH.

Pozdrawiam,

Rob

 7
Author: Rob Wells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 15:37:52

Test powinien się początkowo nie udać. Następnie powinieneś napisać kod, który sprawia, że przechodzą, w przeciwnym razie ryzykujesz napisanie testu, który jest na podsłuchu i zawsze przechodzi.

 7
Author: Quibblesome,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 15:38:02

Podoba mi się odpowiedni akronim bicepsa ze wspomnianej książki pragmatyczne testy jednostkowe :

  • Right : czy wyniki right?
  • B : czy wszystkie warunkiB są prawidłowe?
  • I : Czy możemy sprawdzić i nverse relacje?
  • C : Czy możemy C sprawdzić wyniki za pomocą innych środków?
  • E : Czy możemy wymusić e warunki rror?
  • P : Czy P charakterystyka erformancji mieści się w granicach?

Osobiście uważam, że można uzyskać całkiem daleko, sprawdzając, czy masz odpowiednie wyniki (1+1 powinno zwracać 2 w funkcji dodawania), wypróbowując wszystkie warunki brzegowe, o których możesz myśleć (takie jak użycie dwóch liczb, których suma jest większa niż całkowita wartość max w funkcji dodawania) i wymuszając warunki błędów, takie jak awarie sieci.

 6
Author: Peter Evjan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 11:23:57

Dobre testy muszą być utrzymywane.

Nie do końca rozgryzłem, jak to zrobić w złożonych środowiskach.

Wszystkie podręczniki zaczynają się rozklejać, gdy baza kodów zaczyna docierać do setek tysięcy lub milionów linii kodu.

  • Team interactions explode
  • liczba przypadków testowych
  • [[9]}interakcje między komponentami wybuchają.
  • Czas na zbudowanie wszystkich jednostek staje się znaczącą częścią budowy CZAS
  • zmiana API może przenieść się do setek przypadków testowych. Mimo że zmiana kodu produkcji była łatwa.
  • zwiększa się liczba zdarzeń wymaganych do sekwencji procesów w odpowiednim stanie, co z kolei wydłuża czas wykonania testu.

Dobra architektura może kontrolować część interakcji, ale nieuchronnie jako systemy stają się bardziej złożone zautomatyzowany system testowania rośnie wraz z nim.

W tym miejscu zaczynasz mieć do czynienia z

  • tylko testowanie zewnętrznego API w przeciwnym razie refaktoryzacja wewnętrznych skutkuje znaczącymi przeróbkami przypadków testowych.
  • konfiguracja i rozcięcie każdego testu staje się bardziej skomplikowane, ponieważ zamknięty podsystem zachowuje więcej stanu.
  • nocne kompilowanie i automatyczne wykonywanie testów rośnie do godzin.
  • zwiększony czas kompilacji i wykonania oznacza, że projektanci nie uruchamiają lub nie będą uruchamiać wszystkich testów
  • aby skrócić czas wykonywania testów, należy rozważyć przeprowadzenie testów sekwencyjnych reduce set up and tearddown

Musisz również zdecydować:

Gdzie przechowujesz przypadki testowe w bazie kodu?

  • jak dokumentujesz swoje przypadki testowe?
  • czy oprawy testowe mogą być ponownie używane do oszczędzania konserwacji przypadków testowych?
  • co się dzieje, gdy nocne wykonanie przypadku testowego nie powiedzie się? Kto robi ocenę?
  • jak utrzymujesz makiety obiektów? Jeśli masz 20 modułów, wszystkie używające własnego stylu mock logging API, zmiana API szybko się zmienia. Zmieniają się nie tylko przypadki testowe, ale także 20 obiektów wzorcowych. Te 20 modułów zostało napisanych w ciągu kilku lat przez wiele różnych zespołów. To klasyczny problem ponownego użycia.
  • osoby i ich zespoły rozumieją wartość automatycznych testów, po prostu nie lubią tego, jak robi to drugi zespół. :-)

Mógłbym trwać wiecznie, ale chodzi mi o to, że:

Testy muszą być konserwowane.

 6
Author: DanM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-24 18:46:27

Opisałem te zasady jakiś czas temu w tym artykule magazynu MSDN, który moim zdaniem jest ważny dla każdego dewelopera.

Sposób, w jaki definiuję "dobre" testy jednostkowe, polega na tym, że posiadają one następujące trzy właściwości:

  • są czytelne (nazewnictwo, twierdzenia, zmienne, długość, złożoność..)
  • są Utrzymywalne (bez logiki, nie nadane, oparte na stanie, refakturowane..)
  • są godni zaufania (testować właściwą rzecz, izolować, nie integrować testy..)
 5
Author: RoyOsherove,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-28 19:35:18
  • Unit Testing po prostu testuje zewnętrzne API Twojej jednostki, nie powinieneś testować wewnętrznego zachowania.
  • Każdy test TestCase powinien przetestować jedną (i tylko jedną) metodę wewnątrz tego API.
    • dodatkowe przypadki testowe powinny być uwzględnione dla przypadków awarii.
  • Przetestuj pokrycie swoich testów: gdy jednostka zostanie przetestowana, 100% linii wewnątrz tej jednostki powinno zostać wykonane.
 4
Author: Alotor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 15:40:17

Jay Fields ma wiele dobrych rad na temat pisania testów jednostkowych i jest post, w którym podsumowuje najważniejsze Rady . Tam przeczytasz, że powinieneś krytycznie przemyśleć swój kontekst i ocenić, czy Rada jest dla Ciebie warta. Dostajesz mnóstwo niesamowitych odpowiedzi tutaj, ale to do ciebie zdecydować, który jest najlepszy dla Twojego kontekstu. Wypróbuj je i po prostu refaktoruj, jeśli śmierdzi ci źle.

Z Poważaniem

 2
Author: marcospereira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-15 03:52:27

Nigdy nie zakładaj, że trywialna Metoda 2 linii będzie działać. Pisanie szybkiego testu jednostkowego jest jedynym sposobem, aby zapobiec zagryzieniu Cię przez brakujący test null, zagubiony znak minus i / lub subtelny Błąd zakresu, nieuchronnie, gdy masz jeszcze mniej czasu na radzenie sobie z nim niż teraz.

 1
Author: Joel in Gö,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 15:52:44

Popieram odpowiedź "A TRIP", tyle że testy powinny polegać na sobie!!!

Dlaczego?

DRY-Dont Repeat Yourself-dotyczy również testów! Zależności testowe mogą pomóc 1) zaoszczędzić czas konfiguracji, 2) oszczędzać zasoby urządzenia i 3) wskazywać na awarie. Oczywiście, tylko biorąc pod uwagę, że Twój Framework testowy obsługuje zależności pierwszej klasy. W przeciwnym razie, przyznaję, są źli.

Kontynuacja http://www.iam.unibe.ch/ ~ scg / Research/JExample /

 1
Author: akuhn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-07 21:44:19

Często testy jednostkowe są oparte na obiektach typu mock lub danych typu mock. Lubię pisać trzy rodzaje testów jednostkowych:

  • "przejściowe" testy jednostkowe: tworzą własne obiekty / Dane i testują za ich pomocą swoją funkcję, ale niszczą wszystko i nie zostawiają śladu (jak żadne dane w testowej bazie danych)
  • "persistent" unit test: testują funkcje w Twoim kodzie, tworząc obiekty / dane, które będą później potrzebne bardziej zaawansowanym funkcjom do ich własnego testu jednostkowego (unikanie dla tych zaawansowanych funkcja do odtworzenia za każdym razem własnego zestawu mock obiektów / danych)
  • "trwałe" testy jednostkowe: testy jednostkowe z wykorzystaniem obiektów / danych, które już istnieją (ponieważ zostały utworzone w innej sesji testów jednostkowych) przez trwałe testy jednostkowe.

Chodzi o to, aby uniknąć powtarzania wszystkiego , aby móc przetestować każdą funkcję.

  • uruchamiam trzeci rodzaj bardzo często, ponieważ wszystkie makiety / dane już tam są.
  • uruchamiam drugi rodzaj kiedykolwiek moja zmiana modelu.
  • uruchamiam pierwszy, aby sprawdzić podstawowe funkcje raz na jakiś czas, aby sprawdzić podstawowe regresje.
 0
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 21:04:14

Pomyśl o 2 rodzajach testów i traktuj je inaczej - testy funkcjonalne i testy wydajności.

Używaj różnych danych wejściowych i wskaźników dla każdego z nich. Może być konieczne użycie innego oprogramowania dla każdego typu testu.

 0
Author: Techboy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-14 21:34:54

Używam spójnej konwencji nazewnictwa testów opisanej przez standardy nazewnictwa testów jednostkowych Roya Osherove'a Każda metoda w danej klasie przypadków testowych ma następującą metodę stylu nazwundertest_scenario_expectedresult.

    Sekcja pierwsza nazwa testu to nazwa metody w testowanym systemie.
    Następny jest konkretny scenariusz, który jest testowany.
    Wreszcie są Wyniki tego scenariusza.

Każda sekcja używa wielkich wielbłądów i jest oddzielona przez poniżej punktacji.

Uznałem to za przydatne, gdy uruchamiam test, testy są pogrupowane według nazwy testowanej metody. I mieć konwencję pozwalającą innym programistom zrozumieć intencję testu.

Dodaję również parametry do nazwy metody, jeśli testowana metoda została przeciążona.

 0
Author: Yack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-14 17:41:52