Вы используете MockitoJUnitRunner
, поэтому ваша конфигурация Spring не запускается во время тестов - контекст не создается. Но это не главная проблема, так как вы хотите провести модульное тестирование своей логики.
Если вы хотите провести модульное тестирование своих Spring Bean, которое будет взято из Spring Context, вы, вероятно, будете использовать аннотации SpringJUnit4ClassRunner
(для JUnit4) и @MockBean
(доступно только в Spring Boot) для насмешливых bean-компонентов в Spring Context для тестов.
Когда вы создаете макет - с помощью mockito - вы должны фактически сказать, что должен делать этот макет, когда к нему вызывается метод. Например:
Mockito.when(someBean.innerFunction()).thenReturn(true);
Здесь вы говорите: «Когда метод innerFunction
вызывается для моего фиктивного объекта, пожалуйста, верните true».
Итак, ваш тест может выглядеть так:
@Test
public void test() {
Mockito.when(someBean.innerFunction()).thenReturn(true);
assertTrue(service.functionToTest());
}
Кроме того, вам не нужно использовать MockitoAnnotations.initMocks(this)
в аннотированном методе @Before
, поскольку вы уже используете аннотацию @InjectMocks
.