title: Not able to run Spring JUnit tests with second data source
body: <p>I am using SpringJUnit4ClassRunner to run my integration tests. I had to use two data sources in my Spring Boot REST web service because I want to use different database users for Liquibase and Application queries. When I run the test, the second datasource is not getting created.</p>
  
  <p>Following is my test code</p>
  
  <pre><code>@RunWith(SpringJUnit4ClassRunner.class)
  @SpringApplicationConfiguration(classes = Application.class)
  @WebAppConfiguration
  @IntegrationTest
  public class DomainServiceImplTest {
  
      @Test
      public void testCreateDomain() throws Exception {
      }
  }
  </code></pre>
  
  <p>Following is my datasource instantiation</p>
  
  <pre><code>@Configuration
  @EnableTransactionManagement
  public class DatabaseConfiguration {
  
      private final Logger log = LoggerFactory.getLogger(DatabaseConfiguration.class);
  
      @Inject
      private Environment env;
  
      @Autowired(required = false)
      private MetricRegistry metricRegistry;
  
      @Bean(destroyMethod = "close")
      @Primary
      public DataSource dataSource(DataSourceProperties dataSourceProperties, NileRegistrarProperties nileRegistrarProperties) {
          log.debug("Configuring Datasource");
          if (dataSourceProperties.getUrl() == null) {
              log.error("Your database connection pool configuration is incorrect! The application" +
                      " cannot start. Please check your Spring profile, current profiles are: {}",
                  Arrays.toString(env.getActiveProfiles()));
  
              throw new ApplicationContextException("Database connection pool is not configured correctly");
          }
          HikariConfig config = new HikariConfig();
          config.setDriverClassName(dataSourceProperties.getDriverClassName());
          config.setJdbcUrl(dataSourceProperties.getUrl());
          if (dataSourceProperties.getUsername() != null) {
              config.addDataSourceProperty("user", dataSourceProperties.getUsername());
          } else {
              config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
          }
          if (dataSourceProperties.getPassword() != null) {
              config.addDataSourceProperty("password", dataSourceProperties.getPassword());
          } else {
              config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
          }
  
          //MySQL optimizations, see https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration
          if ("com.mysql.jdbc.jdbc2.optional.MysqlDataSource".equals(dataSourceProperties.getDriverClassName())) {
              config.addDataSourceProperty("cachePrepStmts", nileRegistrarProperties.getDatasource().isCachePrepStmts());
              config.addDataSourceProperty("prepStmtCacheSize", nileRegistrarProperties.getDatasource().getPrepStmtCacheSize());
              config.addDataSourceProperty("prepStmtCacheSqlLimit", nileRegistrarProperties.getDatasource().getPrepStmtCacheSqlLimit());
          }
          if (metricRegistry != null) {
              config.setMetricRegistry(metricRegistry);
          }
          return new HikariDataSource(config);
      }
  
      @Bean(destroyMethod = "close")
      public DataSource liquibaseDataSource(DataSourceProperties dataSourceProperties, LiquibaseProperties liquibaseProperties) {
          log.debug("Configuring Liquibase Datasource");
          if (dataSourceProperties.getUrl() == null) {
              log.error("Your database connection pool configuration is incorrect! The application" +
                      " cannot start. Please check your Spring profile, current profiles are: {}",
                  Arrays.toString(env.getActiveProfiles()));
  
              throw new ApplicationContextException("Database connection pool is not configured correctly");
          }
          HikariConfig config = new HikariConfig();
          config.setDriverClassName(dataSourceProperties.getDriverClassName());
          config.setJdbcUrl(dataSourceProperties.getUrl());
          // Close all connections after liquibase operation is complete.
          config.setMinimumIdle(0);
          if (dataSourceProperties.getUsername() != null) {
              config.addDataSourceProperty("user", liquibaseProperties.getUser());
          } else {
              config.addDataSourceProperty("user", ""); // HikariCP doesn't allow null user
          }
          if (dataSourceProperties.getPassword() != null) {
              config.addDataSourceProperty("password", liquibaseProperties.getPassword());
          } else {
              config.addDataSourceProperty("password", ""); // HikariCP doesn't allow null password
          }
  
          return new HikariDataSource(config);
      }
  
      @Bean
      public SpringLiquibase liquibase(@Qualifier("liquibaseDataSource") DataSource dataSource,
                                       LiquibaseProperties liquibaseProperties) {
  
          // Use liquibase.integration.spring.SpringLiquibase if you don't want Liquibase to start asynchronously
          SpringLiquibase liquibase = new AsyncSpringLiquibase();
          liquibase.setDataSource(dataSource);
          liquibase.setChangeLog("classpath:config/liquibase/master.xml");
          liquibase.setContexts(liquibaseProperties.getContexts());
          liquibase.setDefaultSchema(liquibaseProperties.getDefaultSchema());
          liquibase.setDropFirst(liquibaseProperties.isDropFirst());
          liquibase.setShouldRun(liquibaseProperties.isEnabled());
  
          log.debug("Configuring Liquibase");
  
          return liquibase;
      }
  }
  </code></pre>
  
  <p>Following is the error message.</p>
  
  <pre><code>Error creating bean with name 'dataSourceInitializer': Invocation of init method failed;
  </code></pre>
  
  <p>When I use single data source, everything is working is as expected.</p>