logo

PowerMock

„PowerMock“ yra atvirojo kodo „Java“ sistema, naudojama bandant vienetinį objektą sukurti. Jis išplečia kitas juokingas sistemas, tokias kaip „EasyMock“ ir „Mockito“, kad pagerintų galimybes. „PowerMock“ sistema naudoja pritaikytą klasės įkėlimo programą ir baitinių kodų manipuliavimo metodus, kad būtų galima tyčiotis iš statinių metodų, galutinių klasių, galutinių metodų, privačių metodų, konstruktoriaus ir pašalinti statinius iniciatorius. Pagrindinis „PowerMock“ tikslas yra išplėsti esamas API naudojant tam tikrus metodus ir komentarus, kad būtų pateiktos papildomos funkcijos, kurios labai palengvina įrenginio testavimą.

„PowerMock“ sistema suteikia klasę, vadinamą PowerMockito naudojamas netikriems objektams kurti ir inicijuoja patikrinimą bei lūkesčius. „PowerMockito“ suteikia galimybę dirbti su „Java“ atspindžio API.

Supraskime PowerMock koncepciją naudodami pavyzdį.

PowerMock su Mockito pavyzdys

Čia mes sukursime „PowerMock“ pavyzdį su „Mockito“ ir „JUnit“ sistemomis. Norėdami sukurti pavyzdį naudodami „PowerMock“, turime atlikti šiuos veiksmus.

1 žingsnis: Pridėkite šias „PowerMock“ priklausomybes į pom.xml failą.

1nf 2nf 3nf
 org.powermock powermock-api-mockito 1.7.0 test org.powermock powermock-module-junit4 1.7.0 test 

2 žingsnis: Taikykite „PowerMock“ komentarus

Norėdami naudoti „PowerMock“ su „Mockito“, turime taikyti šiuos veiksmus du testo komentarai:

@RunWith (PowerMockRunner.class): Tai tas pats, ką naudojome ankstesniuose pavyzdžiuose. Vienintelis skirtumas yra tas, kad ankstesniame pavyzdyje naudojome MockitoUnitRunner.class, o dabar naudosime PowerMockRunner.class PowerMockito API įgalinimui teste.

@PrepareForTest: Ji nurodo „PowerMock“ paruošti kai kurias klases testavimui. Jis gali būti taikomas tiek bandymų klasėms, tiek atskiriems bandymo metodams. Tai apima klases su galutiniais, statiniais, privačiais arba vietiniais metodais, iš kurių galima tyčiotis.

 @RunWith(PowerMockRunner.class) @PrepareForTest(Utility.class) public class Powermock_test { } 

Pastaba: Aukščiau pateikti du veiksmai yra privalomi visiems pavyzdžiams, kuriuos ketiname sukurti naudodami „PowerMock“.

Yra šie PowerMock su Mockito ir JUnit sistemomis pavyzdžiai.

1. Pasityčiojimas statinis metodus

Toliau pateiktame pavyzdyje mes pasityčiosime statinis metodus.

1 žingsnis: Sukurkite klasę, kurioje yra a statinis metodas. Sukūrėme klasę tokiu pavadinimu Naudingumas.

kas yra išimčių tvarkymas java

Naudingumas.java

pervardyti katalogą Linux
 public class Utility { public static String staticMethod(String call) { return call; } } 

2 žingsnis: Sukurkite JUnit bandomąjį atvejį, pavadintą Powermock_test, bandymo tikslu.

Powermock_test.java

 import static junit.framework.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(Utility.class) public class Powermock_test { @Test public void TestStaticMethod_WithPowerMockito() { String call = ' Hi there, I'm using PowerMock with Mockito '; String callexpectation = ' Call Expectation for you. '; PowerMockito.mockStatic(Utility.class); PowerMockito.when(Utility.staticMethod(call)).thenReturn(callexpectation); String actualcall = Utility.staticMethod(call); assertEquals(callexpectation, actualcall); } } 

Išvestis

Ši išvestis rodo, kad testas sėkmingai vykdomas.

PowerMock su Mockito pavyzdys

Taip pat galime patikrinti, ar statinis metodas iškviestas, ar ne, naudodami verifyStatic() PowerMockito metodas, kaip parodyta toliau.

 PowerMockito.verifyStatic(); Utility.staticMethod(call); 

2. Pasityčiojimas privatus metodus

Toliau pateiktame pavyzdyje sukursime maketą privatus metodus.

1 žingsnis: Sukurkite klasę, kurioje yra privatus metodas. Sukūrėme klasę pavadinimu Naudingumas ir apibrėžė a privatus metodas ir viešasis metodas (kuris grąžina privataus metodo objektą).

Naudingumas.java

 public class Utility { private String privateMethod(String message) { return message; } public String callPrivateMethod(String message) { return privateMethod(message); } } 

2 žingsnis: Sukurkite JUnit bandomąjį atvejį pavadinimu PowerMock_test bandymo tikslu.

java simbolis į eilutę

Powermock_test.java

 import static junit.framework.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(Utility.class) public class Powermock_test { @Test public void TestPrivateMethod_WithPowerMock() throws Exception { String message = ' PowerMock with Mockito and JUnit '; String expectedmessage = ' Using with EasyMock '; Utility mock =PowerMockito.spy(new Utility()); PowerMockito.doReturn(expectedmessage).when(mock, 'privateMethod', message); String actualmessage = mock.callPrivateMethod(message); assertEquals(expectedmessage, actualmessage); System.out.println(PowerMockito.verifyPrivate(getClass())); } } 

Išvestis

Ši išvestis rodo, kad testas sėkmingai vykdomas.

PowerMock su Mockito pavyzdys

3. Pasityčiojimas galutinis metodus

Toliau pateiktame pavyzdyje mes pasityčiosime galutinis metodus.

1 žingsnis: Sukurkite klasę, kurioje yra a galutinis metodas. Sukūrėme klasę pavadinimu Utility ir apibrėžėme galutinį metodą pavadinimu galutinis metodas.

konvertuoti eilutę į json java

Naudingumas.java

 public class Utility { public final String finalMethod(String message) { return message; } } 

2 žingsnis: Sukurkite JUnit bandomąjį atvejį pavadinimu Powermock_test bandymo tikslais.

Powermock_test.java

 import static junit.framework.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(Utility.class) public class Powermock_test { @Test public void TestFinalMethod_WithPowerMock() throws Exception { String message = ' PowerMock with Mockito and JUnit '; Utility uti = PowerMockito.mock(Utility.class); PowerMockito.whenNew(Utility.class).withNoArguments().thenReturn(uti); Utility uti2 = new Utility(); PowerMockito.verifyNew(Utility.class).withNoArguments(); PowerMockito.when(uti2.finalMethod(message)).thenReturn(message); String message2 = uti2.finalMethod(message); Mockito.verify(uti2).finalMethod(message); assertEquals(message, message2); } } 

Išvestis

Ši išvestis rodo, kad testas sėkmingai vykdomas.

PowerMock su Mockito pavyzdys