Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Millised on levinud probleemid Powermocki kasutamisel koos Mockitoga


Millised on levinud probleemid Powermocki kasutamisel koos Mockitoga


Powermocki kasutamisel Mockitoga võivad nende integratsiooni keerukuse tõttu tekkida mitmed levinud probleemid. Siin on mõned üksikasjalikud selgitused nende teemade kohta:

Kokkusobimatud versioonid

Üks peamisi väljakutseid on tagada Mockito ja PowerMocki versioonid ühilduvad. Näiteks PowerMocki versioon 1.7.0 RC2 ühildub Mockito versiooniga 2.1.0 [1] [4]. Ühilmatute versioonide kasutamine võib põhjustada selliseid vigu nagu `java.lang.noclassdeffoundError` või` java.lang.classNotFoundException`, kuna Powermock tugineb sisemistele mockito API -dele, mis muutuvad versioonide vahel [1] [4].

Mockito API pikendused

PowerMock nõuab Mockito 2.x korralikult töötamiseks õiget Mockito API pikendust. Laiendus "Powermock-API-Mockito" ei tööta koos Mockito 2.x-ga ja põhjustab erandeid nagu "java.lang.noclassdeffoundError: org/mockito/cglib/proxy/methodInterceptor". Selle asemel peaksite nende probleemide vältimiseks kasutama `Powermock-API-Mockito2` [1] [4].

Whiteboxi eemaldamine

Mockito 2.x ei hõlma enam funktsiooni Whitebox, mida kasutati objektide sisemise oleku seadmiseks. Powermock pakub oma valgekasti, kuid selle kasutamine võib põhjustada selliseid probleeme nagu `org.powermock.reflect.exceptions.fieldNotFoundException". Kui Powermocki WhiteBox ei tööta teie jaoks, kaaluge oma rakenduse kirjutamist [1] [4].

Mockmakeri konfiguratsioon

PowerMock rakendab oma `Mockmaker”, mis võib olla vastuolus Mockito `Mock-Maker-Inline'iga”, kui mõlemad on klassiteel kohal. Selle lahendamiseks saate konfigureerida PowerMock delegeerimiseks Mockito 'Mockmaker', määrates konfiguratsioonifailis `mockito.mock-valmistaja-class = Mock-Maker-Inline” [3].

Erandite käitlemine

PowerMocki kasutamisel koos Mockito 2.x -ga on algsed testi erandid mähitud kui "RuntimeexceptionProxy". See nõuab testi annotatsioonide muutmist alates `@Test (eeldatav = someException.class)` väärtuseks `@Test (eeldatav = erand = erand.klass)`, et tabada mähitud erandeid [4].

integreerimine teiste raamistikega

PowerMock võib oma baidikoodiga manipuleerimise tehnikate tõttu olla vastuolus teiste raamistike või raamatukogudega, näiteks kevade või teatud Java versioonidega [9]. See võib põhjustada testide aeglasema täitmist ja täiendavat keerukust sõltuvuste haldamisel [9].

keerukus ja jõudlus

Powermocki täiustatud funktsioonid on suurenenud keerukusega ja aeglasem testi täitmine tingitud baitkoodiga manipuleerimisest. See võib muuta testid keerukamaks seadistamiseks ja hooldamiseks võrreldes ainult Mockito kasutamisega [9].

Ehkki PowerMock pakub võimsaid pilkamisvõimalusi, eriti pärandkoodi või keerukate staatiliste meetodite jaoks, nõuab see hoolikat seadistamist ja juhtimist, et vältida integratsiooniprobleeme Mockito ja muude raamistikega.

Tsitaadid:
]
[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
]
[7] https://github.com/mock/mock/issues/79
]
]