logo

PowerMock

A PowerMock egy nyílt forráskódú Java-keretrendszer, amelyet álobjektumok létrehozására használnak egységtesztelés során. Más gúnyos keretrendszereket, például az EasyMock-ot és a Mockito-t kiterjeszti a képességek javítása érdekében. A PowerMock keretrendszer egyéni osztálybetöltőt és bájtkód-manipulációs technikákat használ a statikus metódusok, végső osztályok, végső metódusok, privát metódusok, konstruktor kigúnyolására és a statikus inicializálók eltávolítására. A PowerMock fő célja a meglévő API-k kibővítése néhány módszerrel és megjegyzéssel, hogy olyan extra funkciókat biztosítson, amelyek meglehetősen egyszerűvé teszik az egységtesztet.

A PowerMock keretrendszer biztosít egy osztályt, az úgynevezett PowerMockito hamis objektumok létrehozására szolgál, és elindítja az ellenőrzést és a várakozást. A PowerMockito biztosítja a Java tükrözési API-val való együttműködést.

Értsük meg a PowerMock fogalmát egy példa segítségével.

buborék rendezés java

Példa a PowerMock-ra Mockitoval

Itt egy példát fogunk létrehozni a PowerMock-ra Mockito és JUnit keretrendszerrel. Ahhoz, hogy példát hozzunk létre a PowerMock használatával, a következő lépéseket kell végrehajtanunk.

1. lépés: Adja hozzá a következő PowerMock-függőségeket a pom.xml fájlhoz.

 org.powermock powermock-api-mockito 1.7.0 test org.powermock powermock-module-junit4 1.7.0 test 

2. lépés: Alkalmazza a PowerMock megjegyzéseket

A PowerMock és a Mockito használatához a következőket kell alkalmaznunk kettő megjegyzések a tesztben:

@RunWith(PowerMockRunner.class): Ez ugyanaz, mint amit az előző példákban használtunk. Az egyetlen különbség az, hogy az előző példában a MockitoUnitRunner.class-t használtuk, most pedig a PowerMockRunner.class-t használjuk a PowerMockito API-k engedélyezésére a tesztben.

@PrepareForTest: Azt mondja a PowerMocknak, hogy készítsen fel néhány osztályt a tesztelésre. Alkalmazható mind a tesztosztályokra, mind az egyes vizsgálati módszerekre. Tartalmaz olyan osztályokat, amelyek végső, statikus, privát vagy natív metódusokkal rendelkeznek, amelyek kigúnyolhatók.

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

Megjegyzés: A fenti két lépés kötelező minden olyan példa esetében, amelyet a PowerMock használatával fogunk létrehozni.

A következő példák a PowerMockra Mockito és JUnit keretrendszerrel.

1. Gúnyolódás statikus mód

A következő példában gúnyolódni fogunk statikus mód.

1. lépés: Hozzon létre egy osztályt, amely tartalmazza a statikus módszer. Létrehoztunk egy osztályt a névvel Hasznosság.

mi az a monitor

Utility.java

 public class Utility { public static String staticMethod(String call) { return call; } } 

2. lépés: Hozzon létre egy JUnit tesztesetet, melynek neve Powermock_test, tesztelés céljából.

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); } } 

Kimenet

A következő kimenet azt mutatja, hogy a teszt sikeresen fut.

Példa a PowerMock-ra Mockitoval

Azt is ellenőrizhetjük, hogy a statikus metódus meghívva van-e vagy sem, a segítségével verifyStatic() a PowerMockito módszerét, az alábbiak szerint.

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

2. Gúnyolódás magán mód

A következő példában egy modellt fogunk létrehozni magán mód.

1. lépés: Hozzon létre egy osztályt, amely privát metódust tartalmaz. A névvel hoztuk létre az osztályt Hasznosság és meghatározta a magán metódus és egy nyilvános metódus (amely a privát metódus objektumát adja vissza).

Utility.java

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

2. lépés: Hozzon létre egy nevű JUnit tesztesetet PowerMock_teszt tesztelés céljából.

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())); } } 

Kimenet

A következő kimenet azt mutatja, hogy a teszt sikeresen fut.

Példa a PowerMock-ra Mockitoval

3. Gúnyolódás végső mód

A következő példában gúnyolódni fogunk végső mód.

1. lépés: Hozzon létre egy osztályt, amely tartalmazza a végső módszer. Létrehoztunk egy Utility nevű osztályt, és meghatároztunk egy utolsó metódust végső módszer.

Utility.java

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

2. lépés: Hozzon létre egy nevű JUnit tesztesetet Powermock_teszt tesztelési célokra.

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); } } 

Kimenet

A következő kimenet azt mutatja, hogy a teszt sikeresen fut.

részstring string java
Példa a PowerMock-ra Mockitoval