如何模拟一个无效的静态方法以使用Powermock引发异常?
我正在尝试使用Powermock和Mockito模拟无效的静态方法来引发异常,如下所示。但是我遇到了一个问题。除非我使用相同的参数对Adder.add()进行两次调用,否则IOException
不会抛出模拟对象。
顺便说一句,我已经添加@RunWith(PowerMockRunner.class)
并@PrepareForTest(Adder.class)
在单元测试类。
class Adder{ public static void add(int i) throws IOException{
return;
}
}
@Test
public void testAdder() throws IOException{
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(12);
try {
Adder.add(11);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// assert things
}
提前致谢。:)
在这里http://code.google.com/p/powermock/issues/detail?id=278进行咨询之后,实际上上述Adder.add(12)是设置模拟静态方法的一部分。这意味着当使用参数12调用Adder.add()时,将抛出IOException。很难理解,对吗?:)因此,应将其编写如下。
PowerMockito.mockStatic(Adder.class);PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
回答:
在这里http://code.google.com/p/powermock/issues/detail?id=278进行咨询之后,实际上上述Adder.add(12)是设置模拟静态方法的一部分。这意味着当使用参数12调用Adder.add()时,将抛出IOException。很难理解,对吗?:)因此,应将其编写如下。
PowerMockito.mockStatic(Adder.class);PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());
编辑:
链接已死,请尝试Internet存档之一。
以上是 如何模拟一个无效的静态方法以使用Powermock引发异常? 的全部内容, 来源链接: utcz.com/qa/420911.html