2016-05-16 168 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; 
}