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
]
]