尽管是明确的,但 Spring Boot 加载了错误的配置
Springboot loading wrong config despite being explicit
我有以下配置类,一个在主包中,一个在测试包中。
主要
@Configuration
public class DynamoConfiguration {
测试
@TestConfiguration
public class DynamoTestConfiguration {
单元测试
@ActiveProfiles(profiles = "test")
@ContextConfiguration(classes = {DynamoTestConfiguration.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class DynamoClientTest {
然而,它仍在加载 DynamoConfiguration
并在我只想加载 DynamoTestConfiguration
时导致失败。我怎样才能确保发生这种情况?
当使用 @SpringBootTest
时,您的应用程序将与类路径上的任何 @Configuration
类 一起启动。 Spring 不知道 DynamoConfiguration
是特殊的,你不想加载它。
作为解决此问题的方法,您可以使用配置文件:
@Profile("prod")
@Configuration
public class DynamoConfiguration {
并在您的测试中,将 !prod
添加到您的 @ActiveProfiles
:
@ActiveProfiles(profiles = "!prod,test")
@ContextConfiguration(classes = {DynamoTestConfiguration.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class DynamoClientTest {
这应该避免 DynamoConfiguration
在测试中加载。
我有以下配置类,一个在主包中,一个在测试包中。
主要
@Configuration
public class DynamoConfiguration {
测试
@TestConfiguration
public class DynamoTestConfiguration {
单元测试
@ActiveProfiles(profiles = "test")
@ContextConfiguration(classes = {DynamoTestConfiguration.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class DynamoClientTest {
然而,它仍在加载 DynamoConfiguration
并在我只想加载 DynamoTestConfiguration
时导致失败。我怎样才能确保发生这种情况?
当使用 @SpringBootTest
时,您的应用程序将与类路径上的任何 @Configuration
类 一起启动。 Spring 不知道 DynamoConfiguration
是特殊的,你不想加载它。
作为解决此问题的方法,您可以使用配置文件:
@Profile("prod")
@Configuration
public class DynamoConfiguration {
并在您的测试中,将 !prod
添加到您的 @ActiveProfiles
:
@ActiveProfiles(profiles = "!prod,test")
@ContextConfiguration(classes = {DynamoTestConfiguration.class})
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class DynamoClientTest {
这应该避免 DynamoConfiguration
在测试中加载。