Spring Boot2 Test - @SpringBootTests не переходит в мой класс SpringBootApplication
Чтобы упростить код служб - я создал суперкласс для приложения SpringBoot, который затем будет унаследован различными приложениями Spring, что позволит избежать кода базовой платы.
//No Annotations here
public class BootApplication extends SpringBootServletInitalizer{
public static final void startBootApp(String[] args,String[][]
customArgs){
customArgs contains Name-Value Pairs for any customization
to spring.config.name or spring.config.location etcetra
//Optional check on Custom Args
ArrayUtils.toMap(customArgs).forEach((k,v) -> Set the System
Property
});
}
@Bean
public WebserverFactoryCustomizer<TomcatServletWebServerFactory>
customizer(){
return container -> {
container.setPort(BootApplication.port);
}
}
private static void getMetaData(Class<?> application){
//Get Annotation Value of CustomSpringBootMetaData
x = application.getAnnotation(CustomSpringBootMetaData.class);
BootApplication.port=x.port();
BootApplication.configName=x.configName();
}
}//Class Ends
************************************************
@Target(Element.Type)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface CustomSpringBootMetaData {
int port() default 8080;
String configName() default "application";
}
**********************************************************
My Application Class
@CustomSpringBootMetaData (port=8080,configName=myApp)
@SpringBoootApplication(scanBasePackages="cxxxx"
MySpringBootApplication extends BootApplication {
//main method
BootApplication.startBootApp(args,null);//Assume Optional check is there in BootApplication
}
**********************************************************
My Test Class
@RunWith(SpringRunner.class)
@SpringBootTest(classes={MySpringBootApplication.class}){
@Test public void test() {..... };
}
Проблема - при запуске Junit Test - путь выполнения не берется Junit, т.е. MyBootApplication->main->BootApplication.startBootApp. При запуске теста он напрямую вызывает настройщик.
Однако путь выполнения (MyBootApplication->BootApplication.startBootApp) берется, когда я загружаю приложение с помощью java -jar xxx.jar или просто maven:spring-boot run
Чего не хватает в моей тестовой конфигурации или каков недостаток дизайна??