Brug af Powermock med Mockito involverer at kombinere styrkerne ved begge rammer for at forbedre enhedstestkapaciteterne. Der er dog betydelige forskelle, når man bruger PowerMock med Mockito 1.x versus 2.x, primært på grund af kompatibilitetsproblemer og ændringer i funktioner.
powermock med mockito 1.x
- Kompatibilitet: Powermock har været mere kompatibel med Mockito 1.x, hvilket muliggør lettere integration og brug af funktioner som at spotte statiske metoder, slutklasser og private metoder. Denne kompatibilitet gjorde det enklere at oprette test, der krævede disse avancerede hånlige kapaciteter.
- Funktionssæt: Powermock gav omfattende støtte til hånende statiske metoder, konstruktører og private metoder, som ikke blev nativt understøttet af Mockito 1.x. Dette gjorde det ideelt til test af ældre kode eller komplekse systemer, hvor en sådan hån var nødvendig.
- Opsætning: Tests brugte typisk `@runwith (powermockrunner.class)` annotation og `@forberedte efter 'til at specificere klasser, der var nødvendige med hån. Denne opsætning muliggjorde omfattende kontrol over testmiljøet.
Powermock med Mockito 2.x
- Kompatibilitetsproblemer: Mockito 2.x introducerede betydelige ændringer, der påvirkede kompatibilitet med Powermock. Tidlige versioner af Powermock havde eksperimentel støtte til Mockito 2.x, men det var ikke robust, hvilket førte til integrationsspørgsmål. PowerMock -versioner 1.7.0 og derover tilbyder bedre support, men brugere skal sikre versionskompatibilitet for at undgå fejl [1] [2].
- Funktionsændringer: Mockito 2.x introducerede support til hånende endelige klasser og metoder, hvilket reducerer behovet for PowerMock i nogle tilfælde. Imidlertid tilbyder PowerMock stadig mere omfattende støtte til statiske og private metoder, hvilket gør det foretrukket for komplekse eller ældre kodebaser [3].
- Opsætning og konfiguration: Opsætningen forbliver ens, hvilket kræver `@runwith (powermockrunner.class)` og `@forberedte '. Brugere skal dog være forsigtige med versionskompatibilitet og muligvis være nødt til at konfigurere PowerMock til at delegere til Mockitos 'mock-maker-inline' for bedre integration med Mockito 2.x-funktioner [1] [4].
Nøgleforskelle
- Versionskompatibilitet: Den mest markante forskel er kompatibilitetsudfordringen med Mockito 2.x. Brugere skal omhyggeligt vælge kompatible versioner for at undgå integrationsproblemer.
- Funktionsoverlapning: Mockito 2.x reducerer behovet for PowerMock i nogle scenarier ved at støtte den endelige klasse og metode -hån. Powermock forbliver dog vigtig for statisk og privat metode, der håner.
- Ydeevne og kompleksitet: Powermock er generelt langsommere og mere kompleks at konfigurere sammenlignet med Mockito alene, men det tilbyder mere kraftfulde funktioner til håndtering af komplekse kodestrukturer.
Sammenfattende, selvom PowerMock kan bruges sammen med både Mockito 1.x og 2.x, kræver overgangen til Mockito 2.x omhyggelig opmærksomhed på versionskompatibilitet og kan reducere nødvendigheden af PowerMock i nogle tilfælde på grund af Mockitos udvidede funktionssæt.
Citater:[1] https://github.com/powermock/powermock/wiki/mockito
)
)
[4] https://proandroiddev.com/mockito-2-x-migration-session-record-droidcon-uk-2018-BA70619F3811
[5] https://powermock.github.io
[6] https://groups.google.com/g/powermock/c/ewzs5malrn0
[7] https://stackoverflow.com/questions/59087124/powermock-and-mockito-compatibility-and-ændringer
[8] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone