Как протестировать потоки Java 8? - PullRequest
0 голосов
/ 13 июня 2018

list.stream().forEach(e -> { dbCall.delete(e.Id());});

Каждый элемент из списка удаляется из базы данных.

При условии, что в списке 3 элемента, как выполнить модульное тестирование:

  1. Удаление вызывалось 3 раза.
  2. Удаление вызывалось «по порядку / последовательности», то есть последовательность элементов в списке?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Просто убедитесь, что ожидаемое время dbCall.delete() должно быть вызвано.Это может выглядеть так:

Mockito.verify(dbCall, times(3L)).delete(any(String.class));

Потоки могут работать параллельно, поэтому вы не можете проверить последовательность.Вы можете сделать это с проверкой элемента по индексу, но последовательность будет проигнорирована.Mockito просто проверит, что использовался call + value.Это достаточно для юнит-теста.

0 голосов
/ 13 июня 2018

Вы можете использовать JUnit's InOrder.

DbCall dbCall = mock(DbCall.class);
List<Element> list = Arrays.asList(newElement(1), newElement(2), newElement(3));

runDeleteMethod(list);

InOrder inorder = inOrder(dbCall);
inorder.verify(dbCall).delete(1);
inorder.verify(dbCall).delete(2);
inorder.verify(dbCall).delete(3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...