2016-05-16 169 views

回答

0

好吧,所以可能有一个属性,春季测试驱动程序设置。不过,我已经找到了一种通过Spring Profile支持实现我的用例的巧妙方法。

下面的大纲是针对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(name = "primaryDataSource") 
@Primary 
@Profile("Integration") 
public DataSource primaryIntegrationDatasource() { 
    return JdbcClients.getIntegrationDatasource(); 
} 

步骤3::豆可以是依赖于轮廓豆可以有条件进行布线根据配置文件排除:

@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; 
}