Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.AUTOMATYZACJATESTÓW
pomysł,jakiwiększościznaswtakiejsytuacjimożeprzyjśćdogłowy,tozakończenie
każdejakcjiasercjąsprawdzeniem,czyakcjasięwykonała,czystanaplikacjisięzmie-
nił.Przykładowo,pootwarciuprzeglądarkiiprzejściudodanejstronysprawdzilibyśmy
asercją,czytytułstronyjestodpowiedni,następniepokliknięciuwprzyciskzaloguj
sprawdzilibyśmyasercją,czypoledowpisanaloginujestwyświetlone,itp.Jakwiadomo
jednakniejesttonajlepszerozwiązanie:przypierwszejasercji,którazwróciwynik
negatywny(oczekiwanywarunekniezostaniespełniony),testzostanieprzerwany,więc
jeśliwaplikacjibyłbybłądpolegającynatym,żepozalogowaniuźlewyświetlasięna
przykładimięzalogowanegoużytkownika(atenwarunekbyłbysprawdzanypozalogo-
waniu),wszystkienapisanetestyzakończyłybysiępozalogowaniudoaplikacji.Takim
podejściemuzależniamytestsprawdzającyjednąfunkcjęodwarunkówdotyczących
zupełnieinnychfunkcjisystemu.Dlategozastosowałamtrochęinnerozwiązanie.Posta-
nowiłamsprawdzaćwkażdymteściejednąkonkretnąoperacjęiweryfikowaćjak
największąliczbąasercji.
Zanimopiszędokładnie,naczympolegapowyższametoda,chciałabymprzybliżyćnarzę-
dzienUnitorazjegomożliwości,abylepiejwytłumaczyćobraneprzezemniepodejście.
nUnitjestnarzędziemwykorzystywanymdopisaniatestówjednostkowychwjęzykupro-
gramowaniaC#.Narzędzietomaadnotacje,któreokreślają,czydanametodawklasie
jesttestem([Test]),czypowinnawykonywaćsięprzed/pokażdymteście([SetUp]/
[TearDown]),lubczydanaklasajestzestawemtestów([Testfixture]).Standardowo
testy,określaneadnotacją[Test],niezależneodsiebie,zawierająprzygotowaniedo
testu,wykonaniesamegotestuorazsprawdzeniejegowyniku.
Postanowiłampozamieniaćniecoroleadnotacji:testembyłcałyzestawtestów,aspraw-
dzeniewykonanejoperacjipojedynczymtestem.Wydajesiętonapierwszyrzutoka
trochęzagmatwane,postaramsięwytłumaczyćtonaprzykładzietestusprawdzającego
dodanieproduktudokoszykajako„niezalogowanyużytkownik”.
Przygotowaniedotestuskładałobysięwówczasznastępującychczynności:
uruchomienieprzeglądarki;
przejściedoadresutestowanejaplikacji;
przejściedostronyproduktu,którymiałbybyćdodanydokoszyka.
WiększośćtychakcjiumieściłamwmetodzieoznaczonejadnotacjąSetUpFixture,czyli
metodzie,którauruchomisięprzedwykonaniemzestawutestów.Jednaktunależybar-
dzouważaćjeśliwykonaniejakiejśmetody,operacjizawartejwtymmiejscuzakończy
sięwyjątkiem,zestawtestóworazmetodaoznaczonaadnotacją[TearDown]nigdysię
niewykonają.Czemuzwracamnatouwagę?
Wmetodziewykonującejsiępozestawietestówlubpoteścieprzeważniewyłączamyprze-
glądarkę,kończymyprocesyitp.Jeśliwszystkienaszetestyzostanąprzerwanenametodzie
6