PowerMockito提供了一些方法來模擬私有方法,以及,從所述API:
<T> WithOrWithoutExpectedArguments<T> when(Object instance, Method method)
Expect calls to private methods.
verifyPrivate(Object object, org.mockito.verification.VerificationMode verificationMode)
Verify a private method invocation with a given verification mode.
還有一堆上述類型的其他簽名。
一個例子:
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.eq;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Foo.class)
public class SimpleTest {
@Test
public void testHello() throws Exception {
Foo foo = PowerMockito.spy(new Foo());
foo.sayHello();
PowerMockito.verifyPrivate(foo).invoke("hello", eq("User"));
}
}
class Foo {
public void sayHello() {
System.out.println(hello("User"));
}
private String hello(String user) {
return "Hello " + user;
}
}
嗯,奇怪的是,他們並沒有給它一個更類似的名稱。 'verifyPrivate'不是問題的一部分,但是如果你舉一個例子,我會接受你的答案(我自己做過,但不是將它添加到問題中,而應該在其他人的答案中)。 – ArtB 2012-02-27 20:07:47
是的,我想他們選擇的命名與Mockito相似。我已經按要求添加了一個示例。 – ebaxt 2012-02-27 21:08:16
謝謝!這個例子是爲了別人的利益,有助於保持S.O.對那些不太熟練的人來說是一個好的資源 – ArtB 2012-02-27 21:58:59