Проверка аргументов, переданных статическому методу, с помощью Mockito и PowerMockJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Проверка аргументов, переданных статическому методу, с помощью Mockito и PowerMock

Сообщение Anonymous »

Я пытаюсь протестировать метод void, проверяя аргументы, которые он передает статическому методу при его вызове. Статический метод отвечает за сохранение этих аргументов.

Код: Выделить всё

class ProxyHandler {
public void process(String str) {
// parse the str and populate x, y, z
PersistManager.proxy(x, y, z);
}
}
PersistManager ниже содержит статический метод, который я пытаюсь захватить полученные аргументы.

Код: Выделить всё

class PersistManager {
public static void proxy(String x, String y, String z) {
// persist the x, y, z
}
}
И, наконец, мой тестовый класс, тестирующий ProxyHandler:

Код: Выделить всё

@RunWith(PowerMockRunner.class)
@PrepareForTest(PersistManager.class)
public class TestProxyHandler() {
private ProxyHandler handler;

@Before
public void setUp() {
handler = new ProxyHandler();
}

@Test
public void testProxy() {
PowerMockito.mockStatic(PersistManager.class);
ArgumentCaptor arg1 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor arg2 = ArgumentCaptor.forClass(String.class);
ArgumentCaptor arg3 = ArgumentCaptor.forClass(String.class);

handler.process("a long string");
PowerMockito.verifyStatic(PersistManager.class, times(1));
PersistManager.proxy(arg1.capture(), arg2.capture(), arg3.capture());
assertEquals("x", arg1.getValue());
}
}
Когда я запускаю тест, я получаю следующую ошибку:

Код: Выделить всё

Wanted but not invoked PersistManager.proxy(
null,
null,
null
);
Actually, there were zero interactions with this mock.
Я также заметил, что если я изменю значение times(1) на любое другое значение, проверкаStatic все равно пройдет.
Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/499 ... -powermock
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»