Avec PowerMock, vous pouvez lui faire retourner n'importe quel objet lorsqu'il est instancié, ou renvoyer une exception.
On suppose que le constructeur de la classe Utility (classe moqueuse) appelée depuis la classe UseUtility (classe cible de test) est simulé.
C'est la classe à tester qui est appelée depuis JUnit.
La classe Utility est instanciée dans la méthode et je souhaite définir les objets et les exceptions renvoyés à ce stade sur des objets arbitraires.
UseUtility.java
public class UseUtility {
public void createUtility() throws Exception {
Utility utility = new Utility();
//Omis par la suite
}
}
Mock it et définissez un comportement arbitraire dans le constructeur.
Utility.java
public class Utility {
public Utility() throws Exception {
//réduction
}
}
Un JUnit qui appelle la classe testée.
Pour utiliser PowerMock avec JUnit, spécifiez PowerMockRunner pour @ RunWith
.
Notez que dans @ PrepareForTest
, vous devez écrire non seulement la classe à se moquer, mais également la classe qui appelle le constructeur.
UseUtilityTest.java
@RunWith(PowerMockRunner.class)
@PrepareForTest({ Utility.class, UseUtility.class })
public class UseUtilityTest {
//réduction
}
thenReturn Définissez l'instance renvoyée par le constructeur de la classe simulée.
Le faux est prêt à être retourné ici, mais il ne doit pas être un simulacre.
@Test
public void test_thenReturn() throws Exception {
//Préparation
//Railleur
Utility mock = PowerMockito.mock(Utility.class);
//Définir l'instance à renvoyer par le constructeur
PowerMockito.whenNew(Utility.class).withNoArguments().thenReturn(mock);
//Courir
UseUtility obj = new UseUtility();
obj.createUtility();
}
thenThrow Définissez une exception qui se produit dans le constructeur de la classe simulée.
@Test(expected = Exception.class)
public void test_thenThrow() throws Exception {
//Préparation
Exception exception = new Exception("error!");
//Railleur
PowerMockito.mock(Utility.class);
//Définir les exceptions qui se produisent dans le constructeur
PowerMockito.whenNew(Utility.class).withNoArguments().thenThrow(exception);
//Courir
UseUtility obj = new UseUtility();
obj.createUtility();
}
PowerMock fournit verifyNew pour valider les constructeurs simulés.
Vous pouvez utiliser les heures de Mockito, atLeast, asLeastOnce, etc. pour vérifier le nombre d'appels.
verifyNew (Utility.class) est synonyme de verifyNew (Utility.class, times (1)).
//Confirmez qu'il a été appelé une fois
PowerMockito.verifyNew(Utility.class).withNoArguments();
Recommended Posts