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);@Testvoid shouldRegisterInMemoryCacheWhenPropertySet() {contextRunner.withPropertyValues("app.cache.type=memory").run(context -> {assertThat(context).hasSingleBean(InMemoryCache.class);assertThat(context).doesNotHaveBean(RedisCache.class);});}@Testvoid 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.