Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Prostyprzykład:HelloDI!
25
cd.ramki
Testyjednostkowepozwalająnaszybkąpętlęzwrotnąnatematstanuaplikacji,ale
możliwedonapisania,jedyniejeślidanajednostkamożebyćodpowiednioodizolowanaod
swoich
zależności
.Istniejąniejasnościcodotego,jakichrozmiarówmożebyćjednostka,
alewszyscyjednakzgadzająsięztym,żezdecydowanieniejesttocoś,corozciągasię
nawielemodułów.Możliwośćtestowaniamodułówwodizolowaniujestzasadniczą
kwestiąwtestowaniujednostkowym.
Jedyniekiedyaplikacjajestpoddawanatestomjednostkowym,uważasięza
testo
-
walną
.Najbezpieczniejszymsposobemzapewnienia
testowalności
jeststworzeniejej
zapomocąTDD.
Wartowspomniećotym,żetestyjednostkowesamewsobieniegwarantujądziałającej
aplikacji.Testycałegosystemulubinnegorodzajutestyintegracyjnenadalniezbędne
dosprawdzenia,czyaplikacjadziałatak,jakpowinna.
Korzyść
TESTOWALNOŚCI
jestnajprawdopodobniejnajbardziejkontrowersyjną
ztych,którewypisaliśmy.Niektórzyprogramiściiarchitekcinadalniepraktykują
testówjednostkowych,awięcuważająkorzyśćzaconajmniejzbędną.Jednakmy
uważamyzajednąznajważniejszychczęścitworzeniaoprogramowaniaidlatego
teżoceniliśmyjako„Zawszewartościowa”wtab.1.1.MichaelFeathersdefiniuje
nawetterminprogramprzestarzałyjakokażdaaplikacja,któraniejestpokrytatestami
jednostkowymi
11
.
Luźnepowiązanieprawieprzypadkowopozwalanatestowaniejednostkowe,ponie-
ważprogramiścitrzymająsię
ZASADYPODSTAWIANIALISKOV
:nieprzejmująsiękonkret-
nymitypamiswoich
ZALEŻNOŚCI
.Oznaczato,żemożnawstrzyknąćobiektzastępczy
dotestowanegosystemu(SystemUnderTest,SUT),coznajdujesięwlistingu1.4.
12
ObiektytypuTestdouble
Częstątechnikąjesttworzenieimplementacji
zależności
,którezachowująsięjakdublerzy
prawdziwychlubzaplanowanychimplementacji.NazywaneoneTestDouble[Obiekty
zastępcze]inigdyniebędąużytewkońcowejwersjiaplikacji.Ichzadaniemjestbycie
zastępstwemdlaprawdziwych
zależności
,kiedyteniedostępnelubniechcemyznich
korzystać.
ObiekttypuTestDoublejestprzydatnywtedy,gdyprawdziwa
zależność
jestpowolna,
droga,wymagausunięcialubpoprostujestpozazakresemdanegotestu.Istniejepełen
wzorzecjęzykowywokółobiektówtypuTestuDoubleiwielepodtypówtakichjak:Stubs,
MocksczyFakes12.
11M.C.Feathers,WorkingEffectivelywithLegacyCode,PrenticeHall2004,xvi.Polskietłumaczenie:Praca
zzastanymkodem.Najlepszetechniki,Helion2014.
12G.Meszaros,xUnitTestPatterns:RefactoringTestCode,Addison–Wesley2007,522.