Private Methoden mit PowerMock testen
Während der Softwareentwicklung kommt es zwangsläufig zu Situationen, in denen Sie öffentliche Methoden testen müssen, die auf privaten Methoden basieren diejenigen. In solchen Fällen kann die Annahme der korrekten Funktionalität privater Methoden den Testprozess vereinfachen. PowerMock ist ein Java-Testframework, das Mechanismen zum Verspotten privater Methoden zu Testzwecken bereitstellt.
Private Methoden mit PowerMock verspotten
Um eine private Methode mit PowerMock zu verspotten, befolgen Sie diese Schritte:
Beispiel:
Betrachten Sie den folgenden Kurs mit einer Öffentlichkeit Methode (meaningfulPublicApi()), die eine private Methode (doTheGamble()) aufruft:
<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>
Der entsprechende JUnit-Test mit PowerMock würde wie folgt aussehen:
<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>
In diesem Beispiel:
Dieses einfache Beispiel zeigt, wie man private Methoden zum Testen mit PowerMock verspottet. Durch den Einsatz dieser Technik können Sie die Logik Ihrer öffentlichen Methoden effektiv isolieren und testen und so die Zuverlässigkeit Ihrer Software sicherstellen.
Das obige ist der detaillierte Inhalt vonWie verspotte ich private Methoden in Java mit PowerMock?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!