Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Mitkä ovat yleiset poikkeukset, kun käytetään PowerMockia Mockito 2.x: n kanssa


Mitkä ovat yleiset poikkeukset, kun käytetään PowerMockia Mockito 2.x: n kanssa


Kun käytät PowerMockia Mockito 2.x: n kanssa, voi syntyä useita yleisiä poikkeuksia ja ongelmia, jotka johtuvat yhteensopivuusongelmista ja muutoksista Mockito -sovellusliittymässä. Tässä on joitain yleisimpiä poikkeuksia ja kuinka käsitellä niitä:

1. NoclassDeffoundError: org.mockito.cglib.proxy.methodinterceptor **

Tämä poikkeus tapahtuu, kun käytetään väärää PowerMock API -laajennusta. `PowerMock-Api-Mockito` -laajennus ei toimi Mockito 2.x: n kanssa, mikä johtaa tähän virheeseen. Sen korjaamiseksi sinun tulisi käyttää "PowerMock-Api-Mockito2" -laajennusta sen sijaan [1] [2].

2. Cockito ja PowerMock yhteensopimattomat versiot

Yhteensopimattomien versioiden käyttäminen Mockiton ja PowerMockin voi johtaa erilaisiin poikkeuksiin. Esimerkiksi PowerMock 1.6.5: llä on kokeellinen tuki Mockito 2.x: lle, mutta se ei ole luotettava. Varmista, että käytät yhteensopivia versioita, kuten PowerMock 1.7.0 RC2 Mockito 2.1.0 [1] [2].

3. LaigalacesessError Mockito 2.7.1 **

Kun käytät PowerMock 1.6.5 tai 1.7.0 RC2 Mockito 2.7.1: llä, saatat kohdata `` IlegalacesessError`. Tämä ongelma ratkaistaan ​​käyttämällä PowerMock 1.7.0 RC4 [1] [4].

4.

PowerMockin kanssa Mockito 2.x: ssä alkuperäiset poikkeukset on kääritty "RuntimeExceptionProxy". Tämä edellyttää testien merkintöjen muuttamista `@test (odotettu = jotkutException.Class)` arvoon `@test (odotettu = poikkeus.Class)` käärittyjen poikkeusten kiinni [1].

5. FieldNotFoundException PowerMockin Whitebox **

Mockito 2.x poistettu Whitebox, joten Powermockin Whiteboxin käyttäminen voi johtaa "FieldNotFoundException" -sovellukseen. Jos näin tapahtuu, harkitse oman toteutuksen kirjoittamista tai koodin uudelleenrekisteröintiä parantaaksesi testekyyden [1] [2].

6. keskeneräinen

Tämä poikkeus voi tapahtua myös silloin, kun hölynpöly näyttää oikealta. Varmista, että pintamenetelmissä ei ole inline -mallin luomuksia ja että kaikki upotus suoritetaan oikein menetelmillä, kuten `sitten palata ()` tai `vitahonsyöttö ()` [3].

7. Yhteensopivuusongelmat uudempien mockito -versioiden kanssa **

PowerMock ei välttämättä ole yhteensopiva uudempien mockito -versioiden, kuten Mockito 4.0.0: n kanssa. Tällaisissa tapauksissa voidaan tarvita vanhempi Mockiton version käyttäminen, joka on yhteensopiva PowerMockin kanssa [10].

Kaiken kaikkiaan Mockito 2.x: n muuttaminen Mockito 1.x: stä PowerMockin kanssa sisältää näiden yhteensopivuusongelmien ratkaisemisen ja mahdollisesti reagoimakokeet PowerMockin käytön välttämiseksi kokonaan [1] [4].

Viittaukset:
.
.
.
.
[5] https://github.com/powermock/powermock/issues/706
[6] https://github.com/mockito/mockito/issues/1606
.
.
[9] https://groups.google.com/g/powermock/c/3g5z_t1rdzq
[10] https://github.com/powermock/powermock/issues/1109