CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-springframework-boot--spring-boot-autoconfigure

Spring Boot AutoConfigure provides auto-configuration capabilities that automatically configure Spring applications based on jar dependencies present on the classpath

Pending
Overview
Eval results
Files

testing.mddocs/guides/

Testing Auto-Configurations

Comprehensive guide to testing Spring Boot auto-configurations.

Basic Testing

Setup

import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;

class MyAutoConfigurationTest {
    
    private final ApplicationContextRunner contextRunner = 
        new ApplicationContextRunner()
            .withConfiguration(AutoConfigurations.of(
                MyAutoConfiguration.class
            ));
}

Test Bean Creation

@Test
void serviceIsAutoConfigured() {
    contextRunner.run(context -> {
        assertThat(context).hasSingleBean(MyService.class);
    });
}

Test with Properties

@Test
void serviceConfiguredWithProperties() {
    contextRunner
        .withPropertyValues(
            "myservice.enabled=true",
            "myservice.timeout=60"
        )
        .run(context -> {
            MyService service = context.getBean(MyService.class);
            assertThat(service.getTimeout()).isEqualTo(60);
        });
}

Test Conditional Logic

@Test
void serviceNotConfiguredWhenDisabled() {
    contextRunner
        .withPropertyValues("myservice.enabled=false")
        .run(context -> {
            assertThat(context).doesNotHaveBean(MyService.class);
        });
}

Test User Configuration Override

@Test
void userConfigurationTakesPrecedence() {
    contextRunner
        .withUserConfiguration(UserConfiguration.class)
        .run(context -> {
            assertThat(context).hasSingleBean(MyService.class);
            assertThat(context.getBean(MyService.class))
                .isInstanceOf(CustomMyService.class);
        });
}

@Configuration
static class UserConfiguration {
    @Bean
    public MyService myService() {
        return new CustomMyService();
    }
}

Advanced Testing

Test with Dependencies

@Test
void autoConfigurationWithDataSource() {
    contextRunner
        .withConfiguration(AutoConfigurations.of(
            DataSourceAutoConfiguration.class,
            MyDatabaseAutoConfiguration.class
        ))
        .withPropertyValues("spring.datasource.url=jdbc:h2:mem:test")
        .run(context -> {
            assertThat(context).hasSingleBean(DataSource.class);
            assertThat(context).hasSingleBean(DatabaseInitializer.class);
        });
}

Test Ordering

@Test
void autoConfigurationRunsAfterDataSource() {
    contextRunner
        .withConfiguration(AutoConfigurations.of(
            DataSourceAutoConfiguration.class,
            MyAutoConfiguration.class
        ))
        .run(context -> {
            // Verify order-dependent behavior
        });
}

Test Failure Scenarios

@Test
void failsWhenRequiredPropertyMissing() {
    contextRunner
        .run(context -> {
            assertThat(context).hasFailed();
            assertThat(context.getStartupFailure())
                .hasMessageContaining("required property");
        });
}

See Also

  • Custom Auto-Configurations
  • Advanced Conditions

Install with Tessl CLI

npx tessl i tessl/maven-org-springframework-boot--spring-boot-autoconfigure

docs

index.md

tile.json