RSS

„Testowanie aplikacji Java za pomocą JUnit” już wydane

Liczba odsłon: 237

Z wiel­ką przy­jem­noś­cią in­for­mu­ję, że mo­ja naj­now­sza, na­pi­sa­na po dłu­giej przer­wie, książ­ka po­świę­co­na tes­tom jed­no­stko­wym i in­te­gra­cyj­nym rea­li­zo­wa­nym w ję­zy­ku Java po­ja­wi­ła się już na pół­kach księ­garń sta­cjo­nar­nych i inter­ne­to­wych. Książka zo­sta­ła wy­da­na jak zwyk­le na­kła­dem wy­daw­nic­twa Helion i no­si ty­tuł „Testowa­nie apli­kac­ji Java za po­mo­cą JUnit”.

Książka roz­po­czy­na się wpro­wa­dze­niem wy­jaś­nia­ją­cym po­trze­bę ko­rzy­sta­nia z tech­nik te­stów auto­ma­tycz­nych oraz ko­rzyś­ci, ja­kie od­no­si pro­jekt z ich wdro­że­nia. Następ­nie szyb­ko prze­cho­dzę do opi­sy­wa­nia – zgod­nie z ty­tu­łem – bi­blio­te­ki JUnit oraz spo­so­bu im­ple­men­to­wa­nia te­stów jed­nost­ko­wych z jej wy­ko­rzys­ta­niem. Zastosowa­łem tech­ni­kę ucze­nia przez przy­kła­dy: na po­cząt­ku przed­sta­wia­ny jest przy­kład pros­tej kla­sy, któ­ra mog­ła­by być stwo­rzo­na przez po­cząt­ku­ją­ce­go adep­ta ję­zy­ka Java, na­stęp­nie pro­wa­dzę ana­li­zę ko­du i pre­zen­tu­ję przy­pad­ki, w któ­rych na pew­no bę­dzie on dzia­łał nie­po­praw­nie, by w koń­cu wpro­wa­dzić te­sty jed­nost­ko­we spraw­dza­ją­ce po­szcze­gól­ne ścież­ki ko­du i na ich pod­sta­wie usu­nąć nie­do­sko­na­ło­ści pro­gra­mu.

W tym sa­mym roz­dzia­le przed­sta­wiam też naj­bar­dziej prak­tycz­ne za­sto­so­wa­nie tech­ni­ki te­stów jed­nost­ko­wych: za­pew­nie­nie nie­zmie­nio­ne­go dzia­ła­nia pro­gra­mu po je­go re­fak­to­ry­za­cji. Kolejna przy­kła­do­wa kla­sa Java jest obu­do­wy­wa­na te­sta­mi jed­nost­ko­wy­mi (przy okaz­ji po­zwa­la to wy­kryć w niej kil­ka błę­dów), po czym jest cał­ko­wi­cie prze­bu­do­wy­wa­na. Na koń­cu pro­ce­su te­sty jed­nost­ko­we udo­wad­nia­ją nam, że spo­sób uży­wa­nia kla­sy nie zmie­nił się, a wszyst­kie wy­wo­ła­nia dzia­ła­ją zgod­nie z za­ło­że­nia­mi i iden­tycz­nie, jak w po­przed­nim wy­da­niu.

W dru­gim roz­dzia­le wpro­wa­dzam Czy­tel­ni­ków w świat imi­ta­cji. Za po­mo­cą klas i obiek­tów imi­ta­cji moż­na sy­mu­lo­wać skom­pli­ko­wa­ne mo­du­ły ze­wnętrz­ne, lik­wi­du­jąc za­leż­noś­ci od nich, uprasz­cza­jąc te­sty i wy­mu­sza­jąc za­cho­wa­nia, któ­re trud­ne by­ły­by nor­mal­nie do spro­wo­ko­wa­nia. Do two­rze­nia na żą­da­nie obiek­tów imi­ta­cji sto­so­wa­na jest bi­blio­te­ka Mockito. Oczywiś­cie, ca­ły roz­dział ba­zu­je na dwóch du­żych przy­kła­dach, pre­zen­tu­ją­cych za­sto­so­wa­nie imi­ta­cji w róż­nych sce­na­riu­szach po­ja­wia­ją­cych się w real­nych za­da­niach, przed któ­ry­mi sta­ją na co dzień pro­gra­miś­ci.

Trzeci roz­dział zry­wa z pros­tym, lecz nie­co archa­icz­nym inter­fej­sem bi­blio­te­ki JUnit na rzecz czy­tel­ne­go, płyn­ne­go inter­fej­su AssertJ. Na ko­lej­nych przy­kła­dach pre­zen­tu­ję, jak ele­ganc­ko mo­gą pre­zen­to­wać się te­sty i jak wpły­wa to na łat­wość ich pi­sa­nia oraz utrzy­my­wa­nia. Wprowadzam rów­nież bi­blio­te­kę Equals­Veri­fier, dzię­ki któ­rej te­sto­wa­nie im­ple­men­tac­ji stan­dar­do­wych me­tod equals() oraz hashCode() sta­je się ba­nal­nie pros­te i bru­tal­nie sku­tecz­ne.

Do te­go mo­men­tu te­sty po­ja­wia­ły się w książ­ce ja­ko ele­ment uzu­peł­nia­ją­cy go­to­wy kod. W czwar­tym roz­dzia­le swój de­biut ma­ją tech­ni­ki TDD oraz TAD, w któ­rych te­sty za­pi­su­je się al­bo przed na­pi­sa­niem pierw­sze­go wier­sza ko­du kla­sy (w przy­pad­ku TDD, zwa­ne­go z te­go po­wo­du rów­nież tests-first de­ve­lop­ment), al­bo rów­no­leg­le z im­ple­men­to­wa­niem po­szcze­gól­nych me­tod (TAD). Na ba­zie ko­lej­nych prak­tycz­nych przy­kła­dów naj­pierw pre­zen­tu­ję uży­wa­nie tech­ni­ki pro­gra­mo­wa­nia ba­zu­ją­ce­go na kon­trak­tach, a na­stęp­nie TDDTAD.

Rozdział pią­ty sta­no­wi lek­kie wpro­wa­dze­nie w ob­szar te­stów in­te­gra­cyj­nych. Pokazuję w nim, jak sy­mu­lo­wać peł­ny sys­tem ba­zo­da­no­wy tak, aby apli­kac­je ko­rzy­sta­ją­ce ze skom­pli­ko­wa­nych wy­ra­żeń SQL lub wy­so­kie­go po­zio­mu ab­strak­cji ty­pu JPA mog­ły być te­sto­wa­ne ca­ły­mi mo­du­ła­mi, bez ko­niecz­noś­ci two­rze­nia imi­ta­cji mo­du­łów lub roz­bi­ja­nia funkcjo­nal­noś­ci na drob­ne częś­ci. Powstający przy­kład apli­kac­ji ba­zo­da­no­wej jest obu­do­wy­wa­ny te­sta­mi tak, aby ich po­zy­tyw­ny wy­nik od ra­zu ozna­czał po­praw­ność dzia­ła­nia w po­łą­cze­niu z praw­dzi­wą ba­zą da­nych.


Mam na­dzie­ję, że tym krót­kim opi­sem za­in­te­re­so­wa­łem pa­rę osób mo­ją no­wą książ­ką. Więcej in­for­mac­ji na jej te­mat oraz o in­nych moich publi­kac­jach moż­na zna­leźć pod adre­sa­mi: