Browse Source
Previously, if spring.main.web-application-type was configured in application.properties to servlet or reactive, setting webEnvironment=NONE on @SpringBootTest would not work correctly and a servlet or reactive web application context would be created based on the value of spring.main.web-application-type. This commit updates the test context bootstapper to set spring.main.web-application-type to none when webEnvironment has been set to none. This is done in the merged context configuration's property source properties which are applied to the environment in a high-precedence test property source that will override configuration in application.properties. Closes gh-29695pull/30692/head
8 changed files with 186 additions and 4 deletions
@ -0,0 +1,13 @@
@@ -0,0 +1,13 @@
|
||||
plugins { |
||||
id "java" |
||||
id "org.springframework.boot.conventions" |
||||
} |
||||
|
||||
description = "Spring Boot web application type smoke test" |
||||
|
||||
dependencies { |
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) |
||||
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-webflux")) |
||||
|
||||
testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) |
||||
} |
||||
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
/* |
||||
* Copyright 2012-2022 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 |
||||
* |
||||
* https://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 smoketest.webapplicationtype; |
||||
|
||||
import org.springframework.boot.SpringApplication; |
||||
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||
|
||||
@SpringBootApplication |
||||
public class SampleWebApplicationTypeApplication { |
||||
|
||||
public static void main(String[] args) { |
||||
SpringApplication.run(SampleWebApplicationTypeApplication.class, args); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
spring.main.web-application-type=reactive |
||||
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
/* |
||||
* Copyright 2012-2022 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 |
||||
* |
||||
* https://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 smoketest.webapplicationtype; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.context.SpringBootTest; |
||||
import org.springframework.context.ApplicationContext; |
||||
import org.springframework.web.context.WebApplicationContext; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for an application using an overridden web application type |
||||
* |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
@SpringBootTest(properties = "spring.main.web-application-type=servlet") |
||||
class OverriddenWebApplicationTypeApplicationTests { |
||||
|
||||
@Autowired |
||||
private ApplicationContext context; |
||||
|
||||
@Test |
||||
void contextIsServlet() { |
||||
assertThat(this.context).isInstanceOf(WebApplicationContext.class); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,44 @@
@@ -0,0 +1,44 @@
|
||||
/* |
||||
* Copyright 2012-2022 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 |
||||
* |
||||
* https://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 smoketest.webapplicationtype; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.context.SpringBootTest; |
||||
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext; |
||||
import org.springframework.context.ApplicationContext; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for an application using a configured web application type |
||||
* |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
@SpringBootTest |
||||
class SampleWebApplicationTypeApplicationTests { |
||||
|
||||
@Autowired |
||||
private ApplicationContext context; |
||||
|
||||
@Test |
||||
void contextIsReactive() { |
||||
assertThat(this.context).isInstanceOf(ReactiveWebApplicationContext.class); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,48 @@
@@ -0,0 +1,48 @@
|
||||
/* |
||||
* Copyright 2012-2022 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 |
||||
* |
||||
* https://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 smoketest.webapplicationtype; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.boot.test.context.SpringBootTest; |
||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; |
||||
import org.springframework.boot.web.reactive.context.ReactiveWebApplicationContext; |
||||
import org.springframework.context.ApplicationContext; |
||||
import org.springframework.web.context.WebApplicationContext; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for a web environment of none overriding the configured web |
||||
* application type. |
||||
* |
||||
* @author Andy Wilkinson |
||||
*/ |
||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE) |
||||
class WebEnvironmentNoneOverridesWebApplicationTypeTests { |
||||
|
||||
@Autowired |
||||
private ApplicationContext context; |
||||
|
||||
@Test |
||||
void contextIsPlain() { |
||||
assertThat(this.context).isNotInstanceOf(ReactiveWebApplicationContext.class); |
||||
assertThat(this.context).isNotInstanceOf(WebApplicationContext.class); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue