如何模拟一个无效的静态方法以使用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

回到顶部