diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootTestContextBootstrapper.java b/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootTestContextBootstrapper.java index f9d79975e79..e6f0dc486b1 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootTestContextBootstrapper.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/context/SpringBootTestContextBootstrapper.java @@ -16,7 +16,6 @@ package org.springframework.boot.test.context; -import java.lang.annotation.Annotation; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -73,7 +72,6 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr @Override public TestContext buildTestContext() { TestContext context = super.buildTestContext(); - verifyConfiguration(context.getTestClass()); WebEnvironment webEnvironment = getWebEnvironment(context.getTestClass()); if (webEnvironment == WebEnvironment.MOCK && hasWebEnvironmentClasses()) { context.setAttribute(ACTIVATE_SERVLET_LISTENER, true); @@ -248,19 +246,6 @@ public class SpringBootTestContextBootstrapper extends DefaultTestContextBootstr return AnnotatedElementUtils.getMergedAnnotation(testClass, SpringBootTest.class); } - protected void verifyConfiguration(Class testClass) { - if (getAnnotation(testClass) != null - && getAnnotation(WebAppConfiguration.class, testClass) != null) { - throw new IllegalStateException("@WebAppConfiguration is unnecessary when " - + "using @SpringBootTest and should be removed"); - } - } - - private T getAnnotation(Class annotationType, - Class testClass) { - return AnnotatedElementUtils.getMergedAnnotation(testClass, annotationType); - } - /** * Create a new {@link MergedContextConfiguration} with different classes. * @param mergedConfig the source config diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperExampleConfig.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperExampleConfig.java index 15f99f1bdac..080441e12c7 100644 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperExampleConfig.java +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperExampleConfig.java @@ -19,7 +19,7 @@ package org.springframework.boot.test.context.bootstrap; import org.springframework.boot.SpringBootConfiguration; /** - * Example configuration used in {@link SpringBootTestContextBootstrapperIntegrationTests}. + * Example configuration used in {@link SpringBootTestContextBootstrapperTests}. * * @author Phillip Webb */ diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperIntegrationTests.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperIntegrationTests.java deleted file mode 100644 index 7ed122e37c9..00000000000 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperIntegrationTests.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * 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.context.bootstrap; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTestContextBootstrapper; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.test.context.BootstrapWith; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Integration tests for {@link SpringBootTestContextBootstrapper} (in its own package so - * we can test detection). - * - * @author Phillip Webb - */ -@RunWith(SpringRunner.class) -@BootstrapWith(SpringBootTestContextBootstrapper.class) -public class SpringBootTestContextBootstrapperIntegrationTests { - - @Autowired - private ApplicationContext context; - - @Autowired - private SpringBootTestContextBootstrapperExampleConfig config; - - @Test - public void findConfigAutomatically() throws Exception { - assertThat(this.config).isNotNull(); - } - - @Test - public void contextWasCreatedViaSpringApplication() throws Exception { - assertThat(this.context.getId()).startsWith("application:"); - } - - @Test - public void testConfigurationWasApplied() throws Exception { - assertThat(this.context.getBean(ExampleBean.class)).isNotNull(); - } - - @TestConfiguration - static class TestConfig { - - @Bean - public ExampleBean exampleBean() { - return new ExampleBean(); - } - - } - - static class ExampleBean { - - } - - @Component - static class ExampleTestComponent { - - } -} diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperTests.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperTests.java index b069e053ed6..176f416d419 100644 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperTests.java +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/context/bootstrap/SpringBootTestContextBootstrapperTests.java @@ -16,51 +16,67 @@ package org.springframework.boot.test.context.bootstrap; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTestContextBootstrapper; -import org.springframework.test.context.BootstrapContext; -import org.springframework.test.context.CacheAwareContextLoaderDelegate; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; +import org.springframework.test.context.BootstrapWith; +import org.springframework.test.context.junit4.SpringRunner; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; +import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link SpringBootTestContextBootstrapper}. + * Tests for {@link SpringBootTestContextBootstrapper} (in its own package so we can test + * detection). * - * @author Andy Wilkinson + * @author Phillip Webb */ +@RunWith(SpringRunner.class) +@BootstrapWith(SpringBootTestContextBootstrapper.class) public class SpringBootTestContextBootstrapperTests { - @Rule - public ExpectedException thrown = ExpectedException.none(); + @Autowired + private ApplicationContext context; + + @Autowired + private SpringBootTestContextBootstrapperExampleConfig config; - @SuppressWarnings("rawtypes") @Test - public void failFastWhenSpringBootTestAndWebAppConfigurationAreUsedTogether() { - SpringBootTestContextBootstrapper bootstrapper = new SpringBootTestContextBootstrapper(); - BootstrapContext bootstrapContext = mock(BootstrapContext.class); - bootstrapper.setBootstrapContext(bootstrapContext); - given((Class) bootstrapContext.getTestClass()) - .willReturn(SpringBootTestAndWebAppConfiguration.class); - CacheAwareContextLoaderDelegate contextLoaderDeleagte = mock( - CacheAwareContextLoaderDelegate.class); - given(bootstrapContext.getCacheAwareContextLoaderDelegate()) - .willReturn(contextLoaderDeleagte); - this.thrown.expect(IllegalStateException.class); - this.thrown.expectMessage("@WebAppConfiguration is unnecessary when using " - + "@SpringBootTest and should be removed"); - bootstrapper.buildTestContext(); + public void findConfigAutomatically() throws Exception { + assertThat(this.config).isNotNull(); } - @SpringBootTest - @WebAppConfiguration - private static class SpringBootTestAndWebAppConfiguration { + @Test + public void contextWasCreatedViaSpringApplication() throws Exception { + assertThat(this.context.getId()).startsWith("application:"); + } + + @Test + public void testConfigurationWasApplied() throws Exception { + assertThat(this.context.getBean(ExampleBean.class)).isNotNull(); + } + + @TestConfiguration + static class TestConfig { + + @Bean + public ExampleBean exampleBean() { + return new ExampleBean(); + } } + static class ExampleBean { + + } + + @Component + static class ExampleTestComponent { + + } }