Как указано в комментариях, «реальным» решением было бы изменить дизайн так, чтобы его было проще тестировать.Но, учитывая ваши ограничения, вот альтернативная идея, что может тоже может работать.
Видите ли, вы заполняете свой список, используя
private static final List<Service> services = Arrays.asList(...)
Итак, теоретическиВы можете использовать PowerMock (ito), чтобы использовать Arrays.asList()
в качестве точки, где вы берете на себя контроль.Другими словами: вы можете asList()
вернуть любой список, который вы хотите использовать для тестирования!
Конечно, лучшим подходом может быть замена статического списка внутри чего-то, что может быть внедрено, например
private final ServicesProvider serviceProvider;
, где у вас есть отдельный класс, который дает вам такой список.Вы можете протестировать этот класс самостоятельно, а затем использовать обычный Mockito, чтобы подключить к вашему тестируемому коду провизируемый поставщик услуг.