Mit PowerMock können Sie festlegen, dass jedes Objekt bei der Instanziierung zurückgegeben oder eine Ausnahme zurückgegeben wird.
Es wird angenommen, dass der Konstruktor der Utility-Klasse (Mocking-Klasse), der von der UseUtility-Klasse (Testzielklasse) aufgerufen wird, verspottet wird.
Dies ist die zu testende Klasse, die von JUnit aufgerufen wird.
Die Utility-Klasse wird in der Methode instanziiert, und ich möchte die zu diesem Zeitpunkt zurückgegebenen Objekte und Ausnahmen auf beliebige setzen.
UseUtility.java
public class UseUtility {
public void createUtility() throws Exception {
Utility utility = new Utility();
//Danach weggelassen
}
}
Verspotten Sie es und definieren Sie ein beliebiges Verhalten im Konstruktor.
Utility.java
public class Utility {
public Utility() throws Exception {
//Kürzung
}
}
Eine JUnit, die die zu testende Klasse aufruft.
Um PowerMock mit JUnit zu verwenden, geben Sie PowerMockRunner für "@ RunWith" an.
Beachten Sie, dass Sie in @ PrepareForTest
nicht nur die zu verspottende Klasse schreiben müssen, sondern auch die Klasse, die den Konstruktor aufruft.
UseUtilityTest.java
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Utility.class, UseUtility.class })
public class UseUtilityTest {
//Kürzung
}
thenReturn Legen Sie die vom Konstruktor der verspotteten Klasse zurückgegebene Instanz fest.
Der Mock soll hier zurückgegeben werden, muss aber kein Mock sein.
@Test
public void test_thenReturn() throws Exception {
//Vorbereitung
//Verspottung
Utility mock = PowerMockito.mock(Utility.class);
//Legen Sie die Instanz fest, die vom Konstruktor zurückgegeben werden soll
PowerMockito.whenNew(Utility.class).withNoArguments().thenReturn(mock);
//Lauf
UseUtility obj = new UseUtility();
obj.createUtility();
}
thenThrow Legen Sie eine Ausnahme fest, die im Konstruktor der verspotteten Klasse auftritt.
@Test(expected = Exception.class)
public void test_thenThrow() throws Exception {
//Vorbereitung
Exception exception = new Exception("error!");
//Verspottung
PowerMockito.mock(Utility.class);
//Legen Sie Ausnahmen fest, die im Konstruktor auftreten
PowerMockito.whenNew(Utility.class).withNoArguments().thenThrow(exception);
//Lauf
UseUtility obj = new UseUtility();
obj.createUtility();
}
PowerMock bietet verifyNew zum Überprüfen verspotteter Konstruktoren.
Sie können Mockitos Zeiten, mindestens, als mindestens einmal usw. verwenden, um die Anzahl der Anrufe zu überprüfen.
verifyNew (Utility.class) ist gleichbedeutend mit verifyNew (Utility.class, times (1)).
//Bestätigen Sie, dass es einmal aufgerufen wurde
PowerMockito.verifyNew(Utility.class).withNoArguments();
Recommended Posts