簡體   English   中英

如何在powermock中模擬void方法

[英]how to mock a void method in powermock

如何模擬一個非靜態、非 final 的 void 方法方法的簽名如下。 我正在使用 Powermockito。

public class Name{

public void methodName{
...
...
}
}

@RunWith(PowerMockRunner.class)
@PrepareForTest({Name.class})
public class TestClass{
@Test
public void testMethodName(){
PowerMockito.doNothing().when(Name.class, methodName);
//some  when calls after this and assert later on
}

調用 methodName 時我什么都不做。 上面的代碼不起作用。 它說 methodName 無法解析。

如果要模擬非靜態方法,則需要指定模擬對象:

public class Name{
    public void methodName{
        ...
    }
}

@RunWith(PowerMockRunner.class)
@PrepareForTest({Name.class})
public class TestClass{
    @Test
    public void testMethodName(){

        Name myName = PowerMockito.mock(Name.class);
        PowerMockito.doNothing().when(myName).methodName();

        //some  when calls after this and assert later on
    }
}

您可以使用 PowerMock.createmock() 來模擬您的類 Where 方法。 例如,你有 ClassA 和 methodA,這是一個 Void 方法。 然后你可以通過以下方式模擬它:

A a = PowerMock.CreateMock(A.class);
a.methodA();
PowerMock.replay(a);

注意:在上述情況下,方法 a 是無效的,這就是 EasyMock.expect 不返回的原因;

我目前不在 IDE 中,但我認為您可以這樣做:

final Name name = mock(Name.class);
doNothing().when(name).methodName();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM