0 Tage Serie
java / intermediate
Snippet

Überprüfung bedingter Bean-Registrierung mit ApplicationContextRunner

Das Hilfswerkzeug ApplicationContextRunner ermöglicht das Testen bedingter Konfigurationen und Bean-Registrierungsregeln in isolierten Kontexten, ohne eine vollständige Spring Boot-Anwendung hochzufahren. Es erzeugt einen kurzlebigen Kontext zur Verifikation von Bean-Existenz, Typen oder Fallback-Logik.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class CacheAutoConfigurationTest {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withUserConfiguration(CacheAutoConfiguration.class);
@Test
void shouldRegisterInMemoryCacheWhenPropertySet() {
contextRunner
.withPropertyValues("app.cache.type=memory")
.run(context -> {
assertThat(context).hasSingleBean(InMemoryCache.class);
assertThat(context).doesNotHaveBean(RedisCache.class);
});
}
@Test
void shouldBackOffWhenDisabled() {
contextRunner
.withPropertyValues("app.cache.enabled=false")
.run(context -> assertThat(context).doesNotHaveBean(CacheManager.class));
}
}
spring
Erklärung
1
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner().withUserConfiguration(CacheAutoConfiguration.class);
Konfiguriert einen isolierten Test-Kontextrunner mit der zu testenden Konfigurationsklasse.
2
.withPropertyValues("app.cache.type=memory")
Simuliert Umgebungseigenschaften zur Auswertung von Bedingungsannotationen wie @ConditionalOnProperty.
3
assertThat(context).hasSingleBean(InMemoryCache.class);
Überprüft, dass exakt ein passendes Bean im dynamisch erzeugten Kontext vorhanden ist.