Per paskutines dvi savaites teko rašyti ypatingai daug modulių testų (angl. unit tests) ir net pavyko pasiekti „išsvajotą“ 100% kodo aprėptį (angl. code coverage). Iš to gimė mintis parašyti kelių straipsnių ciklą apie rekomendacijas rašant modulių testus.

Įrankiai

Pradėsime nuo pagrindinių bibliotekų (labai rekomenduoju šiems tikslams naudotis NuGet):

  • NUnit – paskutiniu metu naudoju kaip pagrindinį modulių testų karkasą, iš alternatyvų galite pasirinkti: MSTest, xUnit, MbUnit, MSpec.
  • Moq – populiariausia netikrų objektų kūrimo bei elgsenos aprašymo (angl. mocking) biblioteka, iš alternatyvų galite pasirinkti: Rhino Mocks, Typemock, JustMock.
  • AutoFixture – greitai populiarėjanti testinių duomenų generavimo biblioteka, iš alternatyvų galite pasirinkti: NBuilder.
  • ReSharper Unit Test Runner – viena patogiausių modulių testų vykdymo aplinkų (eina kartu su ReSharper), iš alternatyvų galite pasirinkti: MS Test Runner, TestDriven.NET, Gallio.
  • dotCover – naujas kodo aprėpties analizės įrankis (integruojamas su ReSharper, bet perkamas atskirai), iš alternatyvų galite pasirinkti: NCover, PartCover.

Aplinkos paruošimas

Turint po ranka visas reikalingas bibliotekas, pats laikas pereiti prie aplinkos paruošimo. Man pasiteisino tokia langų schema:

screen

Kairėje pusėje yra testuojama klasė (angl. System Under Test, SUT), o dešinėje – testai. Priklausomai nuo to, kiek monitorių turite, modulių testų vykdymo langas gali dinamiškai atsirasti lango apačioje arba gali būti užfiksuotas per pusę antro monitoriaus.

Kitas svarbus aspektas – greiti klavišai, skirti paleisti visus / vieną testą, praleisti aprėpties analizę ir pan. Kadangi dažnas testų paleidimas yra neatsiejama testų rašymo dalis, žymiai efektyviau išmokti greituosius klavišus ir naudotis jais, o ne spaudinėti grafinius mygtukus (panašiai, kaip yra su Ctrl + Shift + B :) ).

 

Štai mes ir esame pasiruošę rašyti modulių testus. Kitoje dalyje aš aptarsiu modulių testų vardų sudarymo rekomendacijas, kurias surinkau ir apibendrinau per keletą paskutinių metų.

Patiko (0)

Rodyk draugams