Kun käytät PowerMockia Mockiton kanssa, niiden integroinnin monimutkaisuuden vuoksi voi syntyä useita yleisiä ongelmia. Tässä on joitain yksityiskohtaisia selityksiä näistä aiheista:
yhteensopimattomat versiot
Yksi ensisijaisista haasteista on varmistaa, että Mockito ja Powermockin versiot ovat yhteensopivia. Esimerkiksi PowerMock -versio 1.7.0 RC2 on yhteensopiva Mockito -version 2.1.0 kanssa [1] [4]. Yhteensopimattomien versioiden käyttäminen voi johtaa virheisiin, kuten "java.lang.NoclassDeffoundError" tai "java.lang.classNotFoundException", koska PowerMock riippuu versioiden välisistä sisäisistä mockito -sovellusliittymistä [1] [4].Mockito API -laajennukset
PowerMock vaatii oikean Mockito API -laajennuksen toimimaan oikein Mockito 2.x: n kanssa. `PowerMock-Api-Mockito` -laajennus ei toimi Mockito 2.x: n kanssa ja aiheuttaa poikkeuksia, kuten` java.lang.NoclassDeffoundError: org/mockito/cglib/välityspalvelin/metoditionterceptor`. Sen sijaan sinun tulisi käyttää `PowerMock-Api-Mockito2` näiden ongelmien välttämiseksi [1] [4].Whiteboxin poisto
Mockito 2.x ei enää sisällä Whitebox -ominaisuutta, jota käytettiin objektien sisäisen tilan asettamiseen. PowerMock tarjoaa oman Whiteboxin, mutta sen käyttäminen voi johtaa esimerkiksi `org.powermock.reflect.exceptions.fieldNotFoundException`. Jos PowerMockin Whitebox ei toimi sinulle, harkitse oman toteutuksen kirjoittamista [1] [4].MockMaker -kokoonpano
PowerMock toteuttaa oman "MockMaker", joka voi olla ristiriidassa Mockiton "Mock-Maker-INLINE" kanssa, jos molemmat ovat läsnä luokkapolussa. Tämän ratkaisemiseksi voit määrittää PowerMockin siirtämään Mockiton "MockMaker" -sovellukseen asettamalla "Mockito.mock-Maker-Class = Mock-Maker-INLine" kokoonpanotiedostoon [3].Poikkeuskäsittely
Kun käytät PowerMockia Mockito 2.x: n kanssa, alkuperäiset testipoikkeukset kääritään nimellä "RuntimeExceptionProxy". Tämä edellyttää testien merkintöjen muokkaamista `@test (odotettu = jotkutException.Class)` arvoon `@test (odotettu = poikkeus.Class)` käärittyjen poikkeusten tarttumiseksi [4].Integraatio muihin kehyksiin
PowerMock voi olla ristiriidassa muiden puitteiden tai kirjastojen, kuten kevään tai tiettyjen Java -versioiden kanssa tavukoodin manipulointitekniikoiden vuoksi [9]. Tämä voi johtaa hitaampaan testien suorittamiseen ja ylimääräiseen monimutkaisuuteen riippuvuuksien hallinnassa [9].monimutkaisuus ja suorituskyky
Powermockin edistyneiden ominaisuuksien lisääntyminen ja hitaampi testien suorittaminen tavukoodin manipuloinnin vuoksi. Tämä voi vaikeuttaa testien asettamista ja ylläpitämistä pelkästään Mockiton käyttöön [9].Kaiken kaikkiaan, vaikka PowerMock tarjoaa tehokkaita pilkkaavia ominaisuuksia, etenkin vanhojen koodien tai monimutkaisten staattisten menetelmien suhteen, se vaatii huolellista asennusta ja hallintaa integrointikysymysten välttämiseksi Mockiton ja muiden puitteiden kanssa.
Viittaukset:.
[2] https://stackoverflow.com/questions/43669909/powermock-fails-tests
[3] https://github.com/powermock/powermock/wiki/mockito
.
[5] https://github.com/powermock/powermock/issues/811
[6] https://stackoverflow.com/questions/6036450/powermock-mockito-vs-mockito-alone
[7] https://github.com/mockk/mockk/issues/79
.
[9.