Problem: I want to measure application & bean startup time as a part of test suite
Source of the problem: SpringBootTest.java@132 SpringBootTest context uses new SpringBootApplication, which initiates with DefaultApplicationStartup In the following lines, MergedContextConfiguration is used to set several properties, yet ApplicationStartup is never corrected
Suggested result: ApplicationStartup is taken from the Application class
Scenario:
// Application.java
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.setApplicationStartup(new BufferingApplicationStartup(10000));
application.run(args);
}
---
// ApplicationTest.java
@SpringBootTest
public class ApplicationTests {
@Autowired
ApplicationStartup applicationStartup;
@Test
void test() {
if (applicationStartup instanceof BufferingApplicationStartup) {
System.out.println("This should work!");
} else {
System.out.println("But it doesn't");
}
}
Where: Spring Boot 2.5.4
Comment From: wilkinsona
Thanks for the suggestion. This is covered more broadly by https://github.com/spring-projects/spring-boot/issues/22405.