Spring 测试环境 属性 指示测试上下文
Spring test environment property indicating a test context
spring 测试是否设置了一些环境 属性,我可以利用它有条件地使用 @ConditionalOnProperty
注释在 Spring 启动自动配置工厂的两个实现之间进行选择?
好的,所以 Spring 测试驱动程序可能会设置一个 属性。但是,我找到了一种通过 Spring 配置文件支持来实现我的用例的巧妙方法。
下面的大纲是针对 testng
框架的。我概述了 DataSource bean 的条件连接——为了集成,我创建了一个嵌入式 mysql 实例。 (将来由集成测试管理的 docker mysql 实例取代)。
第 1 步:所有集成测试都应启用集成配置文件:
// Create a TestNG Base class for integration testing.
@Test(groups = "Integration")
@ActiveProfiles("Integration")
public abstract class PayliquidAbstractTestNGIntegrationTest extends AbstractTestNGSpringContextTests {
}
// Use the base class as follows, Leave the @SpringApplicationConfiguration on The test classes as each starter module should confine the create application context to it's configuration hierarchy.
@SpringApplicationConfiguration(TestApplication.class)
public class SomeDaoIntegrationTest extends PayliquidAbstractTestNGIntegrationTest {
//...
}
第 2 步:可以根据配置文件有条件地连接 Bean:
@Bean(name = "primaryDataSource")
@Primary
@Profile("Integration")
public DataSource primaryIntegrationDatasource() {
return JdbcClients.getIntegrationDatasource();
}
第 3 步:也可以根据配置文件排除 Bean:
@Bean
@Primary
@Profile("!Integration")
public DataSource primaryDataSource() {
HikariDataSource hks = new HikariDataSource(datasourceConfig);
logger.info("HikariCP MinimumIdle={}", hks.getMinimumIdle());
logger.info("HikariCP MaxPoolSize={}", hks.getMaximumPoolSize());
return hks;
}
spring 测试是否设置了一些环境 属性,我可以利用它有条件地使用 @ConditionalOnProperty
注释在 Spring 启动自动配置工厂的两个实现之间进行选择?
好的,所以 Spring 测试驱动程序可能会设置一个 属性。但是,我找到了一种通过 Spring 配置文件支持来实现我的用例的巧妙方法。
下面的大纲是针对 testng
框架的。我概述了 DataSource bean 的条件连接——为了集成,我创建了一个嵌入式 mysql 实例。 (将来由集成测试管理的 docker mysql 实例取代)。
第 1 步:所有集成测试都应启用集成配置文件:
// Create a TestNG Base class for integration testing.
@Test(groups = "Integration")
@ActiveProfiles("Integration")
public abstract class PayliquidAbstractTestNGIntegrationTest extends AbstractTestNGSpringContextTests {
}
// Use the base class as follows, Leave the @SpringApplicationConfiguration on The test classes as each starter module should confine the create application context to it's configuration hierarchy.
@SpringApplicationConfiguration(TestApplication.class)
public class SomeDaoIntegrationTest extends PayliquidAbstractTestNGIntegrationTest {
//...
}
第 2 步:可以根据配置文件有条件地连接 Bean:
@Bean(name = "primaryDataSource")
@Primary
@Profile("Integration")
public DataSource primaryIntegrationDatasource() {
return JdbcClients.getIntegrationDatasource();
}
第 3 步:也可以根据配置文件排除 Bean:
@Bean
@Primary
@Profile("!Integration")
public DataSource primaryDataSource() {
HikariDataSource hks = new HikariDataSource(datasourceConfig);
logger.info("HikariCP MinimumIdle={}", hks.getMinimumIdle());
logger.info("HikariCP MaxPoolSize={}", hks.getMaximumPoolSize());
return hks;
}