PowerMock 提供了expectPrivate
模拟私有方法的方法,但是它只出现在EasyMock api中,而不出现在Mockito API中。
那么,是否有 PowerMockito 的等价物?我猜不是因为我没有找到它,而是因为这个 wiki entry。但这实际上并不能阻止 PowerMockito 解决它。所以,我要求这主要是为了确认,因为我认为这对其他人来说是有价值的。
PowerMock 提供了expectPrivate
模拟私有方法的方法,但是它只出现在EasyMock api中,而不出现在Mockito API中。
那么,是否有 PowerMockito 的等价物?我猜不是因为我没有找到它,而是因为这个 wiki entry。但这实际上并不能阻止 PowerMockito 解决它。所以,我要求这主要是为了确认,因为我认为这对其他人来说是有价值的。
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;
}
}