We use the @TestConfiguration annotation, which is a unique form of @Configuration, to define additional beans or customized tests.
Although the @TestConfiguration annotation is inherited from the @Configuration annotation, the main difference is that @TestConfiguration is excluded during Spring Boot’s component scanning.
Additional test configuration for tests is included using the following two ways:
@Import annotation@TestConfiguration as a static inner classIn this shot, we will focus on how to use @TestConfigurations annotations using a static inner class.
Nested classes inside the test class are used to define the test configurations. The @Configuration or @TestConfiguration annotations represent a nested class.
The @SpringBootTest context will automatically register it and load the test configuration if it is declared as a static inner class:
@SpringBootTestpublic class UsingStaticInnerTestConfiguration {@TestConfigurationpublic static class WebClientSetting {@Beanpublic WebClient getWebClient(final WebClient.Builder builder) {return builder.baseUrl("http://localhost").build();}}@Autowiredprivate DataService dataService;// Test methods of dataService}
Let’s breakdown the code written above:
Line 2: We declare a class by using UsingStaticInnerTestConfiguration.
Line 4: We annotate WebClientSetting with the @TestConfiguration annotation.
Line 5: We declare a static inner nested class called WebClientSetting.
Free Resources