2012-02-27 65 views

回答

4

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; 
    } 
} 
+0

嗯,奇怪的是,他們並沒有給它一個更類似的名稱。 'verifyPrivate'不是問題的一部分,但是如果你舉一個例子,我會接受你的答案(我自己做過,但不是將它添加到問題中,而應該在其他人的答案中)。 – ArtB 2012-02-27 20:07:47

+0

是的,我想他們選擇的命名與Mockito相似。我已經按要求添加了一個示例。 – ebaxt 2012-02-27 21:08:16

+0

謝謝!這個例子是爲了別人的利益,有助於保持S.O.對那些不太熟練的人來說是一個好的資源 – ArtB 2012-02-27 21:58:59

相關問題