( atomheart | 2015. 11. 19., cs – 12:28 )

Ha te nem szigeteled el a tesztelt egyseg fuggosegeit, akkor elveszted a unit tesztek nagy elonyet, a "defect localization"-t. Peldaul legyen harom osztalyod, A, B es C. A metodusa meghivja B-t, az meg C-t. Ha te most irsz egy tesztet amely A-t black boxkent kezeli, akkor ha elbaszol valamit C-ben, ugyanaz a teszt hibat fog jelezni, de szamodra nem lesz egybol evidens, hogy hol van a hiba, melyik osztalyban, allhatsz neki debuggolni.

Ha viszont lecsereled A tesztjeiben B-t valamilyen test double-al, akkor tudod, hogy a failure oka csakis A-ban lehet. Sot, ha ertelmes nevet adsz a tesztednek es koveted az AAA patternt, egybol lejon, hogy hol van a kutya elasva.

Most jogos kerdes, hogy mik azok az egysegek, amiket erdemes lecserelni. Ha foo() metodusra irok tesztet, es foo() meghivja bar() es baz() privat metodusokat ugyanabban az osztalyban, akkor a nem fele hajlok, ha viszont athiv mas osztalyokba, akkor azokat szinte mindig lecserelem.

Szerk: ja es a masik nagy hatrany, ha nem mockolod ki B-t, hogy lehet, hogy tobb osztaly is hasznalja B-t, nem csak a, ha ezekre hasonlo teszteket irsz, akkor tobb, egymastol fuggetlen teszt is erinti B/C-t, ugyanazt tesztelik, ha elbaszol valamit C-ben, lesz tobb tiz hibat jelzo teszted, totalis kaosz. A masik meg, hogy lehet, hogy te A-ra irt tesztedben valoszinuleg nem teszteled B/C relevans reszeinek a mukodeset, hanem az alap visszateritett ertekre hagyatkozol. A kod coverage-ben meg B/C ezen reszei ugy fog tunni, hogy le vannak fedve, de valojaban nincsenek tesztelve.

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám