Тестирование на Java (с использованием Mockito и Powermock, но готов использовать все, что решит эту проблему).У меня есть объект, который имеет следующую подпись:
public class MyClass {
public void doRun() {
//Do work
}
public int numberComplete() {
//Return number of items complete
}
}
Метод "doRun" получает список элементов и "завершает" их (каждый занимает значительное количество времени).Чтобы «получить» и «закончить» элемент, используется менеджер макетов, поэтому у меня есть такие тесты:
@Test public void managerIsInformedOfEachFinishedItem() {
task.doRun();
verify(mockManager, times(3)).finish((Item)any());
}
В конце я могу вызвать «task.numberComplete ()»и я вижу, что на самом деле задание возвращается 3. Но я действительно хотел бы сделать что-то вроде:
@Test public void managerIsInformedOfEachFinishedItem() {
int count1, count2;
when(mockManager.finish(item1).thenSet(count1 = task.numberComplete());
when(mockManager.finish(item2).thenSet(count2 = task.numberComplete());
task.doRun();
assertEquals(1, count1);
assertEquals(2, count2);
}
Я понимаю, что это, возможно, уже не доступно.Но если бы вы попытались реализовать что-то подобное (независимо от синтаксиса - мне все равно, насколько чисто тест читает изначально), как бы вы это сделали?Любые предложения / идеи приветствуются!