title: Failed to load ApplicationContext. Can not create integration test
body: <p>I try to create integration test for this REST controller:</p>
  
  <pre><code>@RestController
  @RequestMapping(path = {"/api/reports", "/api"})
  public class DependencyReportController {
  
  private final DependencyDifferenceService differenceService;
  
  public DependencyReportController(DependencyDifferenceService differenceService) {
      this.differenceService = differenceService;
  }
  
  @GetMapping(path = {"/dependencies/difference", "/deps/diff"},
      produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
  public ServiceDependenciesReport get() {
      return differenceService.getAllDiffs();
  }
  
  
  }
  </code></pre>
  
  <p>My test, where I try to check status:</p>
  
  <pre><code>@RunWith(SpringRunner.class)
  @WebMvcTest(DependencyReportController.class)
  public class DependencyReportControllerApiTest {
  @Autowired
  private MockMvc mockMvc;
  
  @MockBean
  private DependencyDifferenceService differenceService;
  
  @Test
  public void test() throws Exception{
      ServiceDependenciesReport report = new ServiceDependenciesReport();
      report.setElapsed("elapsed");
      report.setSuccess(true);
      when(differenceService.getAllDiffs()).thenReturn(report);
      this.mockMvc.perform(get("/dependencies/difference")).andDo(print()).andExpect(status().isOk());
  }
  
  
  
   }
  </code></pre>
  
  <p>And it does not work. Full stacktrace: </p>
  
  <blockquote>
    <p>Description:</p>
    
    <p>Field monitoringProperties MonitoringApplication required a bean of
    type 'MonitoringProperties' that could not be found.
         The injection point has the following annotations:
                      - @org.springframework.beans.factory.annotation.Autowired(required=true)</p>
  
  <pre><code> Action:
   Consider defining a bean of type 'MonitoringProperties' in your configuration.
   2020-01-20 12:40:28.884 ERROR 6388 --- [           main] o.s.test.context.TestContextManager      : Caught exception while 
  </code></pre>
    
    <p>allowing TestExecutionListener 
    [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@35e2d654]
    to prepare test instance [DependencyReportControllerApiTest@44b940a2]
         java.lang.IllegalStateException: Failed to load ApplicationContext
                      at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
    ~[spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
    ~[spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener.postProcessFields(MockitoTestExecutionListener.java:99)
    ~[spring-boot-test-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                      at org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener.injectFields(MockitoTestExecutionListener.java:79)
    ~[spring-boot-test-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                      at org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener.prepareTestInstance(MockitoTestExecutionListener.java:54)
    ~[spring-boot-test-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                      at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
    ~[spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    [junit-4.12.jar:4.12]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    [junit-4.12.jar:4.12]
                      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    [junit-4.12.jar:4.12]
                      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    [junit-4.12.jar:4.12]
                      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    [junit-4.12.jar:4.12]
                      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    [junit-4.12.jar:4.12]
                      at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    [junit-4.12.jar:4.12]
                      at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
    [spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                      at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    [junit-4.12.jar:4.12]
                      at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    [junit-rt.jar:na]
                      at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    [junit-rt.jar:na]
                      at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    [junit-rt.jar:na]
                      at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
    [junit-rt.jar:na]   Caused by:
    org.springframework.beans.factory.UnsatisfiedDependencyException: 
    Error creating bean with name 'monitoringApplication': Unsatisfied 
    dependency expressed through field 'monitoringProperties'; nested 
    exception is 
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No 
    qualifying bean of type 'MonitoringProperties' available: expected at 
    least 1 bean which qualifies as autowire candidate. Dependency 
    annotations: 
    {@org.springframework.beans.factory.annotation.Autowired(required=true)}
                         at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1395)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849)
    ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
    ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
    ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                         at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                         at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
    ~[spring-boot-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                         at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:127)
    ~[spring-boot-test-2.1.3.RELEASE.jar:2.1.3.RELEASE]
                         at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
    ~[spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]
                         at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
    ~[spring-test-5.1.5.RELEASE.jar:5.1.5.RELEASE]*</p>
  </blockquote>
  
  <p>I never write integration tests and don't understand what am I doing wrong? What problem it can be? As I understand I should add @ComponentScan or smth like this?</p>