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.