diff --git a/spring-boot-parent/src/checkstyle/checkstyle.xml b/spring-boot-parent/src/checkstyle/checkstyle.xml
index 32cc2a1bf1..fc172835c4 100644
--- a/spring-boot-parent/src/checkstyle/checkstyle.xml
+++ b/spring-boot-parent/src/checkstyle/checkstyle.xml
@@ -71,7 +71,7 @@
+ value="org.assertj.core.api.Assertions.*, org.junit.Assert.*, org.junit.Assume.*, org.junit.internal.matchers.ThrowableMessageMatcher.*, org.hamcrest.CoreMatchers.*, org.hamcrest.Matchers.*, org.springframework.boot.configurationprocessor.ConfigurationMetadataMatchers.*, org.springframework.boot.configurationprocessor.TestCompiler.*, org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.*, org.mockito.Mockito.*, org.mockito.BDDMockito.*, org.mockito.Matchers.*, org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.*, org.springframework.restdocs.hypermedia.HypermediaDocumentation.*, org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*, org.springframework.test.web.servlet.result.MockMvcResultMatchers.*, org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.*, org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*, org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo" />
diff --git a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/AutoConfigureWebMvc.java b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/AutoConfigureWebMvc.java
index 2c5f3b4adc..9857774bdc 100644
--- a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/AutoConfigureWebMvc.java
+++ b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/AutoConfigureWebMvc.java
@@ -23,8 +23,12 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration;
+import org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration;
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
+import org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration;
+import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
import org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration;
import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
@@ -34,6 +38,7 @@ import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
* using this annotation directly.
*
* @author Phillip Webb
+ * @author Andy Wilkinson
* @since 1.4.0
* @see WebMvcTest
*/
@@ -41,7 +46,9 @@ import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ImportAutoConfiguration({ WebMvcAutoConfiguration.class, GsonAutoConfiguration.class,
- JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class })
+ JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class,
+ FreeMarkerAutoConfiguration.class, GroovyTemplateAutoConfiguration.class,
+ MustacheAutoConfiguration.class, ThymeleafAutoConfiguration.class })
public @interface AutoConfigureWebMvc {
}
diff --git a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java
new file mode 100644
index 0000000000..39fd8938c7
--- /dev/null
+++ b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2012-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.test.autoconfigure;
+
+import org.assertj.core.api.Condition;
+import org.assertj.core.description.TextDescription;
+
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
+import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport;
+import org.springframework.context.ApplicationContext;
+
+/**
+ * AssertJ {@link Condition} that checks that an auto-configuration has been imported.
+ *
+ * @author Andy Wilkinson
+ */
+public final class AutoConfigurationImportedCondition
+ extends Condition {
+
+ private final Class> autoConfigurationClass;
+
+ private AutoConfigurationImportedCondition(Class> autoConfigurationClass) {
+ super(new TextDescription("%s imported", autoConfigurationClass.getName()));
+ this.autoConfigurationClass = autoConfigurationClass;
+ }
+
+ @Override
+ public boolean matches(ApplicationContext context) {
+ ConditionEvaluationReport report = ConditionEvaluationReport
+ .get((ConfigurableListableBeanFactory) context
+ .getAutowireCapableBeanFactory());
+ return report.getConditionAndOutcomesBySource().keySet()
+ .contains(this.autoConfigurationClass.getName());
+ }
+
+ /**
+ * Returns a {@link Condition} that verifies that the given
+ * {@code autoConfigurationClass} has been imported.
+ * @param autoConfigurationClass the auto-configuration class
+ * @return the condition
+ */
+ public static AutoConfigurationImportedCondition importedAutoConfiguration(
+ Class> autoConfigurationClass) {
+ return new AutoConfigurationImportedCondition(autoConfigurationClass);
+ }
+
+}
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 e9e29cddcb..d712f7d551 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,14 +25,13 @@ 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;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.importedAutoConfiguration;
/**
* Integration tests for {@link DataJpaTest}.
@@ -99,20 +98,14 @@ public class DataJpaTestIntegrationTests {
@Test
public void flywayAutoConfigurationWasImported() {
- ConditionEvaluationReport report = ConditionEvaluationReport
- .get((ConfigurableListableBeanFactory) this.applicationContext
- .getAutowireCapableBeanFactory());
- assertThat(report.getConditionAndOutcomesBySource().keySet())
- .contains(FlywayAutoConfiguration.class.getName());
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(FlywayAutoConfiguration.class));
}
@Test
public void liquibaseAutoConfigurationWasImported() {
- ConditionEvaluationReport report = ConditionEvaluationReport
- .get((ConfigurableListableBeanFactory) this.applicationContext
- .getAutowireCapableBeanFactory());
- assertThat(report.getConditionAndOutcomesBySource().keySet())
- .contains(LiquibaseAutoConfiguration.class.getName());
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(LiquibaseAutoConfiguration.class));
}
}
diff --git a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestAutoConfigurationIntegrationTests.java b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestAutoConfigurationIntegrationTests.java
new file mode 100644
index 0000000000..a479c9fdc8
--- /dev/null
+++ b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestAutoConfigurationIntegrationTests.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2012-2016 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.test.autoconfigure.web.servlet;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration;
+import org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration;
+import org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration;
+import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.importedAutoConfiguration;
+
+/**
+ * Tests for the auto-configuration imported by {@link WebMvcTest}.
+ *
+ * @author Andy Wilkinson
+ */
+@RunWith(SpringRunner.class)
+@WebMvcTest
+public class WebMvcTestAutoConfigurationIntegrationTests {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ @Test
+ public void freemarkerAutoConfigurationWasImported() {
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(FreeMarkerAutoConfiguration.class));
+ }
+
+ @Test
+ public void groovyTemplatesAutoConfigurationWasImported() {
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(GroovyTemplateAutoConfiguration.class));
+ }
+
+ @Test
+ public void mustacheAutoConfigurationWasImported() {
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(MustacheAutoConfiguration.class));
+ }
+
+ @Test
+ public void thymeleafAutoConfigurationWasImported() {
+ assertThat(this.applicationContext)
+ .has(importedAutoConfiguration(ThymeleafAutoConfiguration.class));
+ }
+
+}