Автоматически подключается с Spring BOOT и Mockito в тестовых случаях JUnit без какого-либо файла конфигурации контекста - PullRequest
0 голосов
/ 28 сентября 2018

Я ищу решение, в котором я могу использовать аннотацию Autowired для некоторых bean-компонентов, которые вводятся, пока я внедряю Mocks для основного bean-компонента.У меня есть некоторый класс A, подобный этому, и я хочу использовать Autowired D вместо mocked D в классе Test.Я использую весеннюю загрузку версии 2.0.Пожалуйста, дайте мне знать, если кто-то знает какое-либо решение для этого.

   @Repository
   Class A{

     B b;
     C c;
     D d;

     @Autowired
     public A(B b, C c, D d)
     {
           this.a =a;
           this.b = b;
           this.c = c;
      }

}

И я пытаюсь добиться этого, используя Mockito, а также аннотацию Autowired для некоторой зависимости.Я не хочу издеваться над DЭтот подход не работает, я хочу знать, что я могу сделать, чтобы это работало.Если кто-то использовал Mockito вместе с аннотацией Autowired.

@RunWith(SpringJUnit4ClassRunner.class)
Class ATest{

   @Autowired
   @InjectMocks
   A a;

   @Mock
   B b;

   @Mock
   C c;

   @Autowired
    D d;
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

У меня есть решение моей проблемы. Если я использую аннотацию @Spy вместо @Mock для объекта типа D в тестовом классе, он вызовет фактическое вместо Mock.

0 голосов
/ 28 сентября 2018

Поскольку вы пытаетесь написать модульный тест, вы можете использовать mockito для запуска, который вы уже используете.

@RunWith(MockitoJUnitRunner.class)
Class ATest{

   @InjectMocks
   A a = new A();

   @Mock
   B b;

   @Mock
   C c;

   @Mock
    D d;
}
...