PowerMock으로 Private 메소드 테스트
소프트웨어 개발 중에는 Private에 의존하는 공개 메소드를 테스트해야 하는 상황이 불가피하게 발생합니다. 것들. 이러한 경우 프라이빗 메서드의 올바른 기능을 가정하면 테스트 프로세스가 단순화될 수 있습니다. PowerMock은 테스트 목적으로 프라이빗 메서드를 모의하는 메커니즘을 제공하는 Java 테스트 프레임워크입니다.
PowerMock을 사용하여 프라이빗 메서드 모의
PowerMock을 사용하여 프라이빗 메서드를 모의하려면 다음을 따르세요. 단계:
예:
개인 메서드(doTheGamble())를 호출하는 공용 메서드(meaningfulPublicApi())가 있는 다음 클래스를 고려하세요.
<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>
PowerMock을 사용하는 해당 JUnit 테스트는 다음과 같습니다.
<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>
이 예에서:
이 간단한 예는 PowerMock을 사용하여 테스트하기 위해 Private 메소드를 모의하는 방법을 보여줍니다. 이 기술을 활용하면 공개 메서드의 논리를 효과적으로 격리 및 테스트하여 소프트웨어의 안정성을 보장할 수 있습니다.
위 내용은 PowerMock을 사용하여 Java에서 개인 메소드를 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!