Java 使用Mockito和PowerMock模拟私有方法
我正试图像这样用PowerMock模拟私有方法Java 使用Mockito和PowerMock模拟私有方法,java,mocking,mockito,powermock,Java,Mocking,Mockito,Powermock,我正试图像这样用PowerMock模拟私有方法 BalanceResponseGenerator balanceResponseGenerator = spy(new BalanceResponseGenerator()); when(balanceResponseGenerator, "getBalance",client.getParent(), request.getTerminal().getRetailPoint().getRetailNetwork(), result).thenRe
BalanceResponseGenerator balanceResponseGenerator = spy(new BalanceResponseGenerator());
when(balanceResponseGenerator, "getBalance",client.getParent(), request.getTerminal().getRetailPoint().getRetailNetwork(), result).thenReturn(new Balance());
但真正的方法是调用的,为什么会这样?怎么了?我看到了几个例子,它们都不适合我。请解释 我想问题是在Mockito上调用when调用。when(..)而不是。PowerMockito.when(…) 适当的例子见
你把@PrepareForTest(BalancerResponseGenerator.class)放在你的TestClass之上了吗?是的,我当然放了/
@RunWith(PowerMockRunner.class)
// We prepare PartialMockClass for test because it's final or we need to mock private or static methods
@PrepareForTest(PartialMockClass.class)
public class YourTestCase {
@Test
public void privatePartialMockingWithPowerMock() {
PartialMockClass classUnderTest = PowerMockito.spy(new PartialMockClass());
// use PowerMockito to set up your expectation
PowerMockito.doReturn(value).when(classUnderTest, "methodToMock", "parameter1");
// execute your test
classUnderTest.execute();
// Use PowerMockito.verify() to verify result
PowerMockito.verifyPrivate(classUnderTest, times(2)).invoke("methodToMock", "parameter1");
}
}