Ha a production kod szet van bontva, akkor a teszteket nem kell bontogatni, mert azok is csak par sorosak lesznek a mockok felsetupolasaval, asszertacioval egyutt.
Viszont ha ugy nez ki egy unit test, hogy
void test() {
setUpMocksForXYTest();
performTest();
performAssertion();
}
az nem jo, mert ebben az esetben ugyan olvashato a kod, de a tesztkomplexitas el van rejtve egy masik szint ala. Ha ugy irod, hogy
void test() {
// GIVEN
... lets setup the mocks/stubs/whateva ...
// WHEN
... lets perform the test ...
// THEN
... assert the result ...
}
akkor maris sikerult strukturalnod a unit tesztet az olvashatosag miatt, viszont mivel nem rejted el a komplexitast, igy ha a teszted mar szar karbantartani, akkor tudod, hogy valami buzlik a prod. kodban.
Az elso pelda tokeletes lehet BDD-re, ahol kulonbozo state-ket kell letrehozni/felsetupolni az integracios/end-to-end tesztekhez.