Я пытаюсь использовать Powermock и Mockito, чтобы высмеивать статический метод void для исключения исключений, как показано ниже. Но я столкнулся с проблемой. Если я не сделаю два вызова Adder.add() с тем же аргументом, то издеваемое IOException
не будет выбрано.
Кстати, я добавил @RunWith(PowerMockRunner.class)
и @PrepareForTest(Adder.class)
в класс unit test.
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) является частью настройки статического метода mock. Это означает, что при вызове Adder.add() с аргументом 12 будет выбрано IOException. Трудно понять, верно?:) Так что это должно быть написано, как показано ниже.
PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class);
Adder.add(anyInt());