Подтвердить что ты не робот

Как высмеять статический метод void для исключения исключений из Powermock?

Я пытаюсь использовать 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());
4b9b3361

Ответ 1

Ответ следующий.

После консультации здесь 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());

EDIT:
Ссылка мертва, попробуйте Internet Archive вместо этого.

Ответ 2

Или

PowerMockito.mockStatic(Adder.class);
PowerMockito.doThrow(new IOException()).when(Adder.class, "add", Mathers.eq(12));

Ответ 3

Забыл ли вы включить PowerMock в режим воспроизведения?

Как разбить статические методы.

По вашей ссылке...

Как проверить поведение Проверка статического метода выполняется в два этапа. Сначала вызовите PowerMockito.verifyStatic(), чтобы начать проверку поведения и вызов статического метода, который вы хотите проверить. Например.

 PowerMockito.verifyStatic();
 Static.firstStaticMethod(param);

Важно: вам нужно вызвать verifyStatic() для проверки метода.