Spring @ContextConfiguration

前端 未结 3 2176
甜味超标
甜味超标 2021-02-20 04:56

I am running the next test:

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.bean         


        
相关标签:
3条回答
  • 2021-02-20 05:30

    The idea of @Configuration given above works nice. But for that you have to annotate your classes with @Configuration. This is not a nice idea when it comes to testing offline i.e when in your organisation test cases are not executed at built time. In that case going by @ContextConfiguration(locations = { "classpath:/META-INF/spring/applicationContext.xml" }) will be a nice idea.

    For using this method, take care of the following:

    1. Check your classpath in .classpath file of your project.

    2. If you cannot write the path of applicationContext relative to classpath.

    You can have one more file as applicationContextTest folder kept in your test case folder and then one can use @ContextConfiguration(locations = { "classpath:applicationContextTest.xml"})

    0 讨论(0)
  • 2021-02-20 05:35

    Try

    @ContextConfiguration(locations = { "classpath:/META-INF/spring/applicationContext.xml" })
    

    Honestly I would step away from the xml and go this route. Change

    @ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml" })
    

    to

    @ContextConfiguration(classes = { FloorServiceTestConfig.class })
    

    And create the about class

    @Configuration
    public class FloorServiceTestConfig
    {
        @Bean
        public FloorService floorService()
        {
              return new FloorService();
        }
    }
    

    This way when you need to mock your beans for class you're not testing it looks like below

    @Configuration
    public class FloorServiceTestConfig
    {
        @Bean
        public FloorService floorService()
        {
              return Mockito.mock(FloorService.class);
        }
    }
    
    0 讨论(0)
  • 2021-02-20 05:38

    In your case you should use:

    @ContextConfiguration(locations = "file:src/main/resources/META-INF/spring/applicationContext.xml")
    

    Another hint, I see that you use your production applicationContext.xml in your test environment, IMHO it's not a good practice, try use a specific one for testing like applicationContext-test.xml, so you can play with your test context without hurting your production environment.

    0 讨论(0)
提交回复
热议问题