Mockito tarjoaa kaksi menetelmää, joita voidaan käyttää pilkkatilan hallintaan testauksen aikana: `Reset ()` ja `clearInvocations ()`. Vaikka molempia menetelmiä käytetään pilkkatilan hallintaan, ne palvelevat erilaisia tarkoituksia ja niillä on selkeät vaikutukset pilkuihin.
Mockiton `Reset ()` -menetelmä
"Reset ()" -menetelmää Mockitossa käytetään pilkkiobjektin palauttamiseen kokonaan. Tämä tarkoittaa, että se ei vain tyhjennä kutsujen lukumäärää, vaan myös poistaa kaikki pilkulle asetetut upettimet. Tämä voi olla ongelmallista, koska se edellyttää, että ammutaan pilkka uudelleen sen jälkeen, kun olet palauttanut sen, jos haluat ylläpitää testiesi erityistä käyttäytymistä. Reset () `: n käyttöä on yleensä lannistunut, koska se voi johtaa monimutkaisisiin ja vähemmän keskittyneisiin testeihin. On suositeltavaa välttää `nollaus ()` `, ellei ehdottoman välttämätöntä, koska se voi hämärtää testiesi aikomuksen ja vaikeuttaa niitä ylläpitämistä [1] [5] [7].
Mockiton `ClearInvocations ()` menetelmä
"ClearInvocations ()" -menetelmä, joka on otettu käyttöön Mockito 2.1: ssä, antaa sinun tyhjentää pilkan kutsumismäärät nollamatta sen upottamista. Tämä tarkoittaa, että voit jatkaa samojen tynkäjen käyttöä samalla kun varmistetaan, että jokainen testi alkaa puhtaalla liuskekivillä, joka koskee menetelmäkutsuja. Tämä menetelmä on hyödyllinen, kun joudut tarkistamaan vuorovaikutukset tilallisessa skenaariossa tai käytettäessä riippuvuusinjektiokehyksiä, mutta sitä tulisi silti käyttää säästeliäästi. Yleisesti suositellaan välttämään `clearInvocations ()` `, ellei välttämätöntä, koska se voi myös vaikeuttaa testejä, jos sitä ei käytetä ajatuksellisesti [1] [4] [9].
keskeiset erot
- Stubbing: `Reset ()` poistaa kaikki pinta-alukset, vaatii sinua uudelleen.
- Kutsujen lukumäärä: Molemmat menetelmät tyhjentävät kutsumisen määrät, mutta "nollaa ()" tekee niin osana täydellistä nollausta, kun taas `ClearInvocations ()" kohdistuu erityisesti kutsujen lukumäärään.
- Testien monimutkaisuus: Molemmat menetelmät voivat johtaa monimutkaisempiin testeihin, jos niitä ei käytetä huolellisesti, mutta `nollata ()` `` yleensä aiheuttaa enemmän ongelmia, koska tarve pilkkaa uudelleen.
Yhteenvetona voidaan todeta, että vaikka molempia menetelmiä voidaan käyttää pilkkavaltion hallintaan, `nollaus ()` on invasiivisempi ja yleensä lannistunut, kun taas `clearInvocations ()` on kohdennetumpi, mutta sitä tulisi silti käyttää järkevästi ylläpitämään puhtaita ja keskittyneitä testejä.
Viittaukset:.
.
.
.
.
[6] https://reflektoring.io/clean-unit-tests-with-mockito/
.
[8] https://javadoc.io/doc/org.mockito/mockito-core/2.25.1/org/mockito/mockito.html
[9] https://wesome.org/mockito-3-clear-invocations
[10] https://github.com/mockk/mockk/discussions/842