Mockito tillhandahåller två metoder som kan användas för att hantera tillståndet för Mocks under testning: `återställning ()` och `clearInvocations ()`. Medan båda metoderna används för att hantera håligt tillstånd, tjänar de olika syften och har distinkta effekter på hånen.
Mockitos 'återställning () `metod
Metoden "Återställ ()" i mockito används för att återställa ett håligt objekt helt. Detta innebär att det inte bara rensar åkallelsen utan tar också bort alla stubbar som har ställts in på håpen. Detta kan vara problematiskt eftersom det kräver att du stämmer om hån efter att du återställer den om du vill behålla specifikt beteende för dina tester. Användningen av "återställning ()" är i allmänhet avskräckt eftersom det kan leda till komplexa och mindre fokuserade tester. Det rekommenderas att undvika att använda "återställning ()" såvida det inte är absolut nödvändigt, eftersom det kan dölja avsikten med dina tester och göra dem svårare att underhålla [1] [5] [7].
Mockitos `clearInvocations ()`
Metoden "clearinvocations ()", som introducerats i Mockito 2.1, låter dig rensa uppmaningsräkningarna för en hålig utan att återställa stubben. Detta innebär att du kan fortsätta att använda samma stubbar samtidigt som du säkerställer att varje test börjar med en ren skiffer angående metodens invokationer. Den här metoden är användbar när du behöver verifiera interaktioner i ett statligt scenario eller när du använder ramverk för beroendeinjektion, men den bör fortfarande användas sparsamt. Det rekommenderas i allmänhet att undvika att använda `clearInvocations ()` såvida det inte är nödvändigt, eftersom det också kan komplicera tester om de inte används eftertänksamt [1] [4] [9].
Nyckelskillnader
- Stubbing: `Återställ ()` tar bort all stubbning, vilket kräver att du stämmer om hån, medan `clearinvocations ()` lämnar stubbe intakt.
- Inkallningsräkningar: Båda metoderna tydliga åkallelser räknas, men `återställning ()` gör det som en del av en fullständig återställning, medan `clearinvocations ()` specifikt riktar sig mot åkallelse.
- Testkomplexitet: Båda metoderna kan leda till mer komplexa tester om de inte används noggrant, men `återställning ()" tenderar att orsaka fler problem på grund av behovet av att stubba hån.
Sammanfattningsvis, medan båda metoderna kan användas för att hantera håligt tillstånd, är 'återställning ()' mer invasiv och i allmänhet avskräckt, medan 'clearinvocations ()' är mer riktad men bör fortfarande användas på ett förnuftigt sätt för att upprätthålla rena och fokuserade tester.
Citeringar:]
[2] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearinvocations
[3] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.internal.mockitocore.clearallcaches
[4] https://www.lambdatest.com/automation-testing-advisor/selenium/methods/org.mockito.mockito.clearinvocations
]
[6] https://reflectoring.io/clean-unit-tests-with-mockito/
[7] https://stackoverflow.com/questions/30081161/mockito-does-verify-method-reboot-number-of-times
[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