Improve diagnostics with @ServiceConnection on non-static field

Closes gh-34795
This commit is contained in:
Andy Wilkinson
2023-03-28 10:44:17 +01:00
parent 2267430bdb
commit d8d6cb7323
2 changed files with 19 additions and 0 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.boot.autoconfigure.service.connection.ConnectionDetai
import org.springframework.boot.test.autoconfigure.service.connection.ServiceConnectionContextCustomizerFactoryTests.ServiceConnections.NestedClass;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
/**
* Tests for {@link ServiceConnectionContextCustomizerFactory}.
@@ -55,6 +56,13 @@ public class ServiceConnectionContextCustomizerFactoryTests {
assertThat(customizer.getSources()).hasSize(3);
}
@Test
void whenClassHasNonStaticServiceConnectionThenCreateShouldFailWithHelpfulIllegalStateException() {
assertThatIllegalStateException()
.isThrownBy(() -> this.factory.createContextCustomizer(NonStaticServiceConnection.class, null))
.withMessage("@ServiceConnection field 'service' must be static");
}
static class NoServiceConnections {
}
@@ -77,6 +85,13 @@ public class ServiceConnectionContextCustomizerFactoryTests {
}
static class NonStaticServiceConnection {
@ServiceConnection(TestConnectionDetails.class)
private GenericContainer<?> service = new GenericContainer<>("example");
}
static class TestConnectionDetails implements ConnectionDetails {
}