Apply initializer automatically for context tests
Update `ServiceConnectionContextCustomizer` so that is applies the `TestcontainersLifecycleApplicationContextInitializer` to all application contexts. Closes gh-35222
This commit is contained in:
@@ -24,6 +24,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.BDDMockito.then;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -84,6 +85,16 @@ class TestcontainersLifecycleApplicationContextInitializerTests {
|
||||
then(container).should(never()).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void doesNotInitializeSameContextMoreThanOnce() {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
int initialNumberOfPostProcessors = applicationContext.getBeanFactoryPostProcessors().size();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
new TestcontainersLifecycleApplicationContextInitializer().initialize(applicationContext);
|
||||
}
|
||||
assertThat(applicationContext.getBeanFactoryPostProcessors()).hasSize(initialNumberOfPostProcessors + 1);
|
||||
}
|
||||
|
||||
private AnnotationConfigApplicationContext createApplicationContext(Startable container) {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
new TestcontainersLifecycleApplicationContextInitializer().initialize(applicationContext);
|
||||
|
||||
@@ -24,8 +24,13 @@ import org.junit.jupiter.api.Test;
|
||||
import org.testcontainers.containers.Container;
|
||||
import org.testcontainers.containers.GenericContainer;
|
||||
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.test.context.ContextCustomizer;
|
||||
import org.springframework.test.context.MergedContextConfiguration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for {@link ServiceConnectionContextCustomizerFactory}.
|
||||
@@ -39,8 +44,14 @@ class ServiceConnectionContextCustomizerFactoryTests {
|
||||
private final ServiceConnectionContextCustomizerFactory factory = new ServiceConnectionContextCustomizerFactory();
|
||||
|
||||
@Test
|
||||
void createContextCustomizerWhenNoServiceConnectionsReturnsNull() {
|
||||
assertThat(this.factory.createContextCustomizer(NoServiceConnections.class, null)).isNull();
|
||||
void createContextCustomizerWhenNoServiceConnectionsReturnsCustomizerToApplyInitializer() {
|
||||
ContextCustomizer customizer = this.factory.createContextCustomizer(NoServiceConnections.class, null);
|
||||
assertThat(customizer).isNotNull();
|
||||
GenericApplicationContext context = new GenericApplicationContext();
|
||||
int initialNumberOfPostProcessors = context.getBeanFactoryPostProcessors().size();
|
||||
MergedContextConfiguration mergedConfig = mock(MergedContextConfiguration.class);
|
||||
customizer.customizeContext(context, mergedConfig);
|
||||
assertThat(context.getBeanFactoryPostProcessors()).hasSize(initialNumberOfPostProcessors + 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user