如何在powermock中模拟void方法



如何模拟非静态、非final的void方法。方法的签名如下。我用的是powermockit。

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()来模拟你的class Where方法。例如,你有ClassA和methodA,这是一个Void方法。然后你可以用下面的方式模拟它:

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

注意:在上面的情况下方法a是无效的,这就是EasyMock的原因。

我不是在一个IDE的时刻,但我认为你可以这样做:

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

相关内容

  • 没有找到相关文章

最新更新