Temat: Czy jeden test powinien testować jedną rzecz?
Sebastian M.:
Nie sądzisz, że wprowadziłoby to "odrobinę" zamieszania i mogłoby negatywnie wpłynąć na czytelność testów?
I tak i nie.
Jeżeli test sprawdza zachowanie dla zbioru danych, nawet jednoelementowego.
Dla przykładu, przypadki dla sqrt():
- liczby całkowitych, dodatnich
- liczby ułamków, dodatnich
- liczby całkowitych, ujemnych
- liczby ułamków, ujemnych
- przypadki specjalne 0 i 1
Ja bym z tego zrobił trzy testy - dla liczb dodatnich, ujemnych i przypadki specjalne :)
Sebastian M.:
Poza tym, jakbyś taki test nazwał? Wydaje mi się, że z odpowiednimi nazwami metod testowych ich zbiór z powodzeniem zastępuje dokumentacje, daje nam doskonały obraz tego, co można i jakie są ograniczenia funkcjonalności.
Testy nazywał bym tak, jak testowana operacja: testNegativeFloats, testPositiveFloats, testZero i testOne.
Inny przykład - wg Ciebie, należało by osobno testować getter i setter. Działanie gettera sprawdzam setterem, zaś settera - getterem.
Wg mnie to jest jeden testAccessor, rozbijanie tego nie ma najmniejszego sensu.
Przecież nie będziesz sprawdzać działania getterów/setterów
włamując się do obiektów? :)