Prevent Application / CommandLineRunner classes from executing during JUnit testing

前端 未结 7 1490
既然无缘
既然无缘 2020-12-07 22:47

If in your TestCase class there is this annotations:

@SpringApplicationConfiguration(classes = {Application.class})

this will cause the

7条回答
  •  太阳男子
    2020-12-07 23:02

    As mentioned in spring documentation http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html you can use @ContextConfiguration with a special initializer:

    ConfigFileApplicationContextInitializer is an ApplicationContextInitializer that can apply to your tests to load Spring Boot application.properties files. You can use this when you don’t need the full features provided by @SpringApplicationConfiguration.

    In this example anyComponent is initialized and properties are injected, but run(args) methods won't be executed. (Application.class is my main spring entry point)

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = Application.class, 
                          initializers = ConfigFileApplicationContextInitializer.class)
    public class ExtractorTest {
        @Autowired
        AnyComponent anyComponent;
    
        @Test
        public void testAnyComponent() {
           anyComponent.anyMethod(anyArgument);
        }
    }
    

提交回复
热议问题