Тест Junit — реализация интерфейса без загрузки @MockBean

#java #unit-testing #junit #interface #spring-boot-test

Вопрос:

Проблема : Во время тестирования Junit реализации интерфейса не отображаются автоматически в виде списка.

Ниже приведены фрагменты кода:

Интерфейс(TaskExectuors) имеет 2 реализации (Task1 и Task2). Эти задачи используются в другом классе обслуживания(TaskManager), где Список подключается автоматически.

Однако в тестовом классе Junit список интерфейсов всегда имеет значение 0, несмотря на то , что он помечен как @MockBean.

Есть какие-нибудь зацепки к тому, чего именно здесь не хватает ? В чем может быть причина того, что реализации интерфейса не подключаются автоматически как список при запуске junit ?

 public interface TaskExecutors{  doProcess() }  @Service class Task1 implenents TaskExecutors{  doProcess(){} }  @Service  class Task2 implenents TaskExecutors{  doProcess(){} }   @Service  class TaskManager {    @Autowired  Listlt;TaskExecutorsgt; taskExuecutorsList;   void doSomeAction(){  taskExecutorsList.stream().....  } }  

Тестовые примеры :

 @SprintBootTest(classes={TaskManager.class,TaskExecutors.class}) class TaskManagerTest{    @Autowire  TaskManager taskManager;   @MockBean   Listlt;TaskExecutorgt; taskExuecutorsList;    @Test  public void testTaskExecutorsListCount(){  assertNotNull(taskExuecutorsList); // pass   assertEquals(2,taskExuecutorsList.size) // failed .. Expected 2 : Actual 0    }  }  

Обновления :
Похоже, модульное тестирование не загружает все необходимые объекты с автоматической проводкой, как ожидалось, с опциями SpringBoot(classes= {}).

Когда я удалил параметры классов (таким образом, перешел на уровень интегрированного тестирования), все компоненты были загружены, все работало так, как ожидалось. Также в моем коде требуется исправление, как показано ниже :

 assertEquals(2,taskExuecutorsList.size) - Wrong Check and failed  assertEquals(2,taskManager.getTaskExuecutorsList().size) - Passed