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
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
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
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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.12.2025 - 00:28