當前位置:編程學習大全網 - 源碼下載 - 如何嘲笑私有方法使用PowerMock測試

如何嘲笑私有方法使用PowerMock測試

1、用下面的的Mockito的API,我成功地做到這壹點: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;

}

}

而這裏的JUnit測試: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();

}

}

2. 這將與任何測試的壹個通用的解決方案是創建妳自己的模擬。 更改您要保護的。 在妳的測試類擴展類 覆蓋到返回的任何常量想要 這沒有按'任意所以它不是優雅,但它會壹直工作,即使沒有PowerMock。另外,您的Mockito來為妳做的步驟#2&#3,如果妳已經做了第壹步了。要直接嘲笑壹個,妳將需要PowerMock如圖對方的回答。

3. 實際它是扔是不是從它的我覺得還是妳的測試並不如預期。

  • 上一篇:文玩競拍兼職是真的嗎
  • 下一篇:Delphi與VB、VC、PowerBuilder有何區別,我學其他語言是否更好?
  • copyright 2024編程學習大全網