Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Ako sa líši Mockmaker Powermock od Mockita Mhower-Maker-inline


Ako sa líši Mockmaker Powermock od Mockita Mhower-Maker-inline


PowerMock a Mockito sa používajú na zosmiešnenie v Jave, ale slúžia rôznym účelom a majú zreteľné vlastnosti, najmä v tom, ako zvládajú zosmiešnenie prostredníctvom ich príslušných implementácií „Mockmaker“.

Powermock's MockMaker

Powermock rozširuje ďalšie falošné knižnice ako Easymock a Mockito poskytovaním silnejších schopností. Používa vlastnú manipuláciu s classloaderom a bajtekódami na umožnenie zosmiešňovania statických metód, konštruktorov, konečných tried a metód, súkromných metód a odstránenia statických inicializátorov [4] [9]. Powermock's `Mockmaker` je implementovaný triedou„ PowerMockmaker`, ktorý delegátov volá na iného „Mockmaker“, ak je to potrebné. To umožňuje spoločnosti Powermock pracovať spolu s inými výsmechovými rámcami bez konfliktov za predpokladu, že je nakonfigurovaný správne [7].

Prístup Powermocku je invazívnejší a vyžaduje manipuláciu s bytovým kódom, aby sa dosiahol svoje pokročilé vysmievacie schopnosti. To môže byť prospešné pre zložité scenáre, v ktorých samotný Mockito nie je dostatočný, ako napríklad výsmech statické metódy alebo súkromné ​​metódy [9].

Mockito's Mock-Maker-Inline

Mockito's 'Mock-Maker-Inline "je funkcia zavedená, ktorá umožňuje zosmiešňovanie konečných tried a metód. Nevyžaduje manipuláciu s bytovým kódom, ako je Powermock, ale namiesto toho používa Java's Instrumentation API na úpravu tried za behu. Tento prístup je menej invazívny a nepotrebuje vlastný classloader [2] [8].

Ak chcete povoliť „Mock-Maker-inline`, zvyčajne pridáte súbor s názvom` org.mockito.plugins.Mockmaker` s obsahom „Mock-Maker-inline` do adresára„ SRC/Test/Resources/Mockito-exsions`. Prípadne môžete použiť artefakt „MockIto-inline`, ktorý zjednodušuje proces tým, že nevyžaduje manuálnu konfiguráciu extenzívneho súboru„ MockMaker` Extension [2] [10].

Mockito 5.0.0 a neskoršie verzie používajú ako predvolený výrobca falošného výrobcu „Mock-Maker“, čo uľahčuje zosmiešnenie konečných tried a metód bez ďalšej konfigurácie [3] [10].

Kľúčové rozdiely

-Invazívnosť: PowerMock je invazívnejší kvôli použitiu manipulácie s bytovým kódom a vlastného classloader, zatiaľ čo Mockito „Mock-Maker-inline“ používa inštrumentáciu Java, čo je menej invazívne.
- Schopnosti: PowerMock môže zosmiešňovať statické metódy, konštruktory a súkromné ​​metódy, ktoré Mockito nedokáže robiť bez ďalších nástrojov, ako je „MockIto-inline“ pre konečné triedy a metódy.
-Konfigurácia: PowerMock vyžaduje špecifickú konfiguráciu, aby delegovala na iné implementácie „MockMaker`, zatiaľ čo„ Mock-Maker-Maker-inline “je možné povoliť pomocou jednoduchého konfiguračného súboru alebo pomocou artefaktu„ MockIto-inline “.
-Predvolené správanie: V Mockito 5 a neskôr je „Mock-Maker-inline“ predvolené, zatiaľ čo Powermock vždy vyžaduje explicitné nastavenie, aby používal svoje pokročilé funkcie.

Stručne povedané, zatiaľ čo „Mocker-Maker-inline“ vylepšujú schopnosti powermock aj Mockito, ktoré sa vysmievajú, výrazne sa líšia v ich prístupe, invazívnosti a typoch zosmiešňovania, ktoré podporujú. PowerMock je výkonnejší, ale tiež zložitejší, zatiaľ čo Mockito's `Mock-Maker-inline" ponúka jednoduchší spôsob, ako zosmiešňovať záverečné triedy a metódy.

Citácie:
[1] https://github.com/powermock/powermock/wiki/Mockito
[2] https://davidvlijmincx.com/posts/writing_higher_quality_tests_with_Mockitos_inline_mock_maker/
[3] https://stackoverflow.com/questions/65986197/Difference-between-mocko-core-core-vs-mocko-inline
[4] https://powermock.github.io
[5] https://javadoc.io/static/org.mockito/mockito-core/3.2.4/org/mockito/plugins/inlinevockmaker.html
[6] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.mockito.plugins.mockmaker
[7] https://www.lambdatest.com/automation-testing-advisor/selenium/classes/org.powermock.api.mockito.mockmaker.powermockmaker
[8] https://davidvlijmincx.com/posts/Mockito_Mock_final_methods_and_classes/
[9] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mocko-alone
[10] https://stackoverflow.com/questions/53274463/what-is-mickito-inline-and- --kon-does-it-work-to-mock-final-methods