Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHPUnit] Testowanie klas abstrakcyjnych - czy w ogóle to robić?
czychacz
post 27.05.2017, 17:51:11
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 13
Dołączył: 20.09.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Pytanie od człowieka, który jakiś czas temu zaczął bawić się testowaniem aplikacji z PHPUnit:
Czy powinienem testować klasy abstrakcyjne?
Teoretycznie podczas testu mógłbym tworzyć klasę, która dziedziczy po abstrakcyjnej, ale czy jest sens, skoro i tak testuję klasy pochodne?
Go to the top of the page
+Quote Post
vokiel
post 27.05.2017, 20:29:09
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Masz na myśli pewnie testy jednostkowe.

Są dwie drogi, jedni mówią, żeby testować tylko poprzez publiczne API. Inni żeby w testach jednostkowych testować każdą najmniejszą część (klasy abstrakcyjne, metody prywatne/chronione) bezpośrednio.
W obu przypadkach przetestujesz taką metodę, czy to klasy abstrakcyjnej, czy po prostu protected/private. Bezpośrednio może być łatwiej i czytelniej, pośrednio może to wymagać ciut więcej pracy (zależy od tego jak rozbudowany jest kod wykorzystujący te metody).

Różnica jest jeszcze w ilości pracy potrzebnej na utrzymanie kodu i testów w dłuższym czasie. Gdy testujesz prywatne/chronione/abstrakcyjne poprzez publiczne API to po ich zmianach może się okazać, że modyfikacja testów nie będzie potrzebna. Gdy testuje się te metody bezpośrednio, to zwykle takiej opcji nie ma.



--------------------
Go to the top of the page
+Quote Post
lukaskolista
post 29.05.2017, 09:49:43
Post #3





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Testuje się interface (publiczne metody) z prostego powodu: interesuje Cię to, jak klasa jest zorganizowana, czy jak działa? Testowanie niepublicznych metod uwala możliwość refaktoryzacji bez zmiany testów - robiąc refaktoryzację wnętrza klasy taka klasa dalej działa tak samo.

@vokiel
Pierwsze słyszę o tej drugiej drodze, to raczej jakieś próby pisania poważnych testów przez osoby początkujące w tym temacie.

Jeżeli dalej masz wątpliwości to spróbuj testować niepubliczne metody, a następnie spróbuj wprowadzać modyfikację w swoim kodzie - powodzenia smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.08.2025 - 18:09