如何模拟非静态,非最终的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无法解析。
答案 0 :(得分:0)
我目前不在IDE,但我认为你可以这样做:
final Name name = mock(Name.class);
doNothing().when(name).methodName();
答案 1 :(得分:0)
你可以使用PowerMock.createmock()模拟你的类Where Where。 例如,你有ClassA和methodA这是一个Void方法。 然后你可以用下面的方式嘲笑它:
A a = PowerMock.CreateMock(A.class);
a.methodA();
PowerMock.replay(a);
注意:在上面的情况下,方法a是无效的,这就是EasyMock.expect没有返回的原因;
答案 2 :(得分:0)
如果要模拟非静态方法,则需要指定模拟对象:
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
}
}