From c1a2a77cbedbf8b3051c7202597abfaf82199653 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 10 May 2016 10:13:17 +0100 Subject: [PATCH] Auto-configure Flyway and Liquibase when using DataJpaTest Closes gh-5716 --- .../orm/jpa/AutoConfigureDataJpa.java | 6 ++++- .../orm/jpa/DataJpaTestIntegrationTests.java | 23 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/AutoConfigureDataJpa.java b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/AutoConfigureDataJpa.java index f795d527fa..b1648879bf 100644 --- a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/AutoConfigureDataJpa.java +++ b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/AutoConfigureDataJpa.java @@ -24,8 +24,10 @@ import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration; +import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; +import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration; @@ -35,6 +37,7 @@ import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfigu * this annotation directly. * * @author Phillip Webb + * @author Andy Wilkinson * @since 1.4.0 * @see DataJpaTest */ @@ -44,7 +47,8 @@ import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfigu @ImportAutoConfiguration({ HibernateJpaAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, TransactionAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, - DataSourceAutoConfiguration.class }) + DataSourceAutoConfiguration.class, FlywayAutoConfiguration.class, + LiquibaseAutoConfiguration.class }) public @interface AutoConfigureDataJpa { } diff --git a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java index 28ce2e9b4f..e9e29cddcb 100644 --- a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java +++ b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java @@ -25,6 +25,10 @@ import org.junit.runner.RunWith; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport; +import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; +import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit4.SpringRunner; @@ -34,6 +38,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Integration tests for {@link DataJpaTest}. * * @author Phillip Webb + * @author Andy Wilkinson */ @RunWith(SpringRunner.class) @DataJpaTest @@ -92,4 +97,22 @@ public class DataJpaTestIntegrationTests { this.applicationContext.getBean(ExampleComponent.class); } + @Test + public void flywayAutoConfigurationWasImported() { + ConditionEvaluationReport report = ConditionEvaluationReport + .get((ConfigurableListableBeanFactory) this.applicationContext + .getAutowireCapableBeanFactory()); + assertThat(report.getConditionAndOutcomesBySource().keySet()) + .contains(FlywayAutoConfiguration.class.getName()); + } + + @Test + public void liquibaseAutoConfigurationWasImported() { + ConditionEvaluationReport report = ConditionEvaluationReport + .get((ConfigurableListableBeanFactory) this.applicationContext + .getAutowireCapableBeanFactory()); + assertThat(report.getConditionAndOutcomesBySource().keySet()) + .contains(LiquibaseAutoConfiguration.class.getName()); + } + }