Test de méthodes privées avec PowerMock
Lors du développement de logiciels, il est inévitable de rencontrer des situations dans lesquelles vous devez tester des méthodes publiques qui s'appuient sur des méthodes privées. ceux. Dans de tels cas, supposer que les méthodes privées fonctionnent correctement peut simplifier le processus de test. PowerMock est un framework de test Java qui fournit des mécanismes pour simuler des méthodes privées à des fins de test.
Se moquer des méthodes privées à l'aide de PowerMock
Pour simuler une méthode privée à l'aide de PowerMock, suivez ces étapes :
Exemple :
Considérez la classe suivante avec une méthode publique (meaningfulPublicApi()) qui invoque une méthode privée (doTheGamble()) :
<code class="java">public class CodeWithPrivateMethod { public void meaningfulPublicApi() { if (doTheGamble("Whatever", 1 << 3)) { throw new RuntimeException("boom"); } } private boolean doTheGamble(String whatever, int binary) { Random random = new Random(System.nanoTime()); boolean gamble = random.nextBoolean(); return gamble; } }</code>
Le test JUnit correspondant utilisant PowerMock ressemblerait à :
<code class="java">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; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.powermock.api.mockito.PowerMockito.when; import static org.powermock.api.support.membermodification.MemberMatcher.method; @RunWith(PowerMockRunner.class) @PrepareForTest(CodeWithPrivateMethod.class) public class CodeWithPrivateMethodTest { @Test(expected = RuntimeException.class) public void when_gambling_is_true_then_always_explode() throws Exception { CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod()); when(spy, method(CodeWithPrivateMethod.class, "doTheGamble", String.class, int.class)) .withArguments(anyString(), anyInt()) .thenReturn(true); spy.meaningfulPublicApi(); } }</code>
Dans cet exemple :
Cet exemple simple montre comment simuler des méthodes privées pour tester à l'aide de PowerMock. En tirant parti de cette technique, vous pouvez isoler et tester efficacement la logique de vos méthodes publiques, garantissant ainsi la fiabilité de votre logiciel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!