2015-10-20 3 views
1

Je suis en train de configurer liquibase pour gérer ma base de données dans une nouvelle application de démarrage de printemps. J'ai besoin de la dépendance de liquibase dans mon classpath pour réinitialiser l'état de la base de données après l'exécution de certains tests d'intégration. Au cours de mes tests, je ne veux pas que la liquibase soit activée via la configuration automatique du ressort lors de l'initialisation du contexte d'application. J'ai essayé d'ajouter liquibase.enabled = false à application.properties, cependant lorsque je débogue la classe LiquibaseAutoConfiguration, il apparaît que enabled est toujours défini sur true. Je ne suis pas nouveau au printemps, mais je suis nouveau à la configuration automatique de spring-boot. Est-ce que quelqu'un a eu des problèmes avec le démarrage de printemps ne respectant pas les propriétés dans application.properties?Spring-boot ne respectant pas les propriétés de la liquibase

Ma configuration est assez minime:

extraits de code pertinents:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = { SpringBootClass.class }) 
public class databaseTests{ 
    @Before 
    public void setup() throws LiquibaseException, SQLException { 
     Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(dataSource.getConnection())); 
     Liquibase liquibase = new Liquibase("db/changelog/db.changelog-master.yaml", new FileSystemResourceAccessor("src/main/resources/"),database); 
     liquibase.dropAll(); 
     liquibase.update("test"); 
    } 
.. 
} 

@SpringBootApplication 
@Import({ DataSourceConfig.class, HibernateConfig.class, OauthConfig.class }) 
@EnableConfigurationProperties 
public class SpringBootClass { 
.. 
} 

<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-parent</artifactId> 
<version>1.2.6.RELEASE</version> 
<!-- <liquibase.version>3.3.5</liquibase.version> --> 


<dependency> 
    <groupId>org.liquibase</groupId> 
    <artifactId>liquibase-core</artifactId> 
    <scope>test</scope> 
</dependency> 

Répondre

2

Si vous voulez que vos tests pour consommer application.properties vous devez les exécuter comme une application de démarrage de printemps. L'utilisation de @ContextConfiguration signifie que vous les utilisez actuellement en tant qu'application Spring Framework de vanille. Remplacez l'annotation @ContextConfiguration par @SpringApplicationConfiguration.

+0

Ceci est également une bonne solution, finalement parce que je n'ai pas besoin de démarrage au printemps pour ces tests j'ai fini par aller avec le ConfigFileAplicationContextInitializer dans ma réponse ci-dessus. Merci d'avoir pris le temps de répondre, j'accepterai le vôtre comme le bon – ctwomey1

0

AURAIT RTFM ...

de spring boot documentation

ConfigFileApplicationContextInitializer est un ApplicationContextInitializer qui peut appliquer à vos tests pour charger Spring Boot fichiers application.properties. Vous pouvez l'utiliser lorsque vous n'avez pas besoin des fonctions complètes fournies par @SpringApplicationConfiguration.

@ContextConfiguration (classes = Config.class, initializers = ConfigFileApplicationContextInitializer.class)

Changer ma config d'utiliser le initialiseur travaillé.