1
resposta

Multi datasources

Bom dia como eu configuro multi datasource ex: mysql para camada de dev e h2 para camada de test.

exemplo

Development, src/main/resource/application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/dev
spring.datasource.username=root
spring.datasource.password=root

Testing, src/test/resource/application.properties

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa

E caso queira usar o flyway como ficaria seria assim

flyway.locations=db/migration,db/specific/h2
flyway.locations=db/migration,db/specific/mysql
1 resposta

Uma maneira de configurar um DataSource separado para o contexto de teste é utilizando um recurso chamado "Spring Profiles" para definir um bean DataSource que estará disponível apenas em um profile de testes.

Para isso, podemos usar um arquivo .properties como você comentou ou podemos escrever os valores na própria classe.

 @Bean
    @Profile("test")
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1");
        dataSource.setUsername("sa");
        dataSource.setPassword("sa");

        return dataSource;
    }

JUnit:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {
  Application.class, 
  H2TestProfileJPAConfig.class})
@ActiveProfiles("test")
public class SpringBootProfileIntegrationTest {
    // ...
}