diff --git a/spring-boot-docs/pom.xml b/spring-boot-docs/pom.xml
index b9b73a200b5..04b879f7c2f 100644
--- a/spring-boot-docs/pom.xml
+++ b/spring-boot-docs/pom.xml
@@ -742,6 +742,11 @@
spring-boot-test-support
test
+
+ org.springframework.boot
+ spring-boot-starter-web
+ test
+
diff --git a/spring-boot-docs/src/main/asciidoc/index.adoc b/spring-boot-docs/src/main/asciidoc/index.adoc
index de0438ccfb3..3a5876dfba3 100644
--- a/spring-boot-docs/src/main/asciidoc/index.adoc
+++ b/spring-boot-docs/src/main/asciidoc/index.adoc
@@ -50,6 +50,7 @@ Phillip Webb; Dave Syer; Josh Long; Stéphane Nicoll; Rob Winch; Andy Wilkinson;
:propdeps-plugin: https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin
:ant-manual: http://ant.apache.org/manual
:code-examples: ../java/org/springframework/boot
+:test-examples: ../../test/java/org/springframework/boot
:gradle-user-guide: https://docs.gradle.org/2.14.1/userguide
:gradle-dsl: https://docs.gradle.org/2.14.1/dsl
// ======================================================================================
diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
index 45ed2704cfd..73d41fe1629 100644
--- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
@@ -6207,8 +6207,9 @@ features will be enabled:
@Test
public void testRequest() throws Exception {
- HttpHeaders headers = template.getForEntity("http://myhost.com/example", String.class).getHeaders();
- assertThat(headers.getLocation().toString(), containsString("myotherhost"));
+ HttpHeaders headers = this.template.getForEntity(
+ "http://myhost.example.com/example", String.class).getHeaders();
+ assertThat(headers.getLocation()).hasHost("other.example.com");
}
}
@@ -6222,32 +6223,7 @@ specify a host and port will automatically connect to the embedded server:
[source,java,indent=0]
----
- @RunWith(SpringRunner.class)
- @SpringBootTest
- public class MyTest {
-
- @Autowired
- private TestRestTemplate template;
-
- @Test
- public void testRequest() throws Exception {
- HttpHeaders headers = template.getForEntity("/example", String.class).getHeaders();
- assertThat(headers.getLocation().toString(), containsString("myotherhost"));
- }
-
- @TestConfiguration
- static class Config {
-
- @Bean
- public RestTemplateBuilder restTemplateBuilder() {
- return new RestTemplateBuilder()
- .additionalMessageConverters(...)
- .customizers(...);
- }
-
- }
-
- }
+include::{test-examples}/web/client/SampleWebClientTests.java[tag=test]
----
diff --git a/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientConfiguration.java b/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientConfiguration.java
new file mode 100644
index 00000000000..d6a7a8c5737
--- /dev/null
+++ b/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientConfiguration.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2012-2018 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.web.client;
+
+import java.net.URI;
+
+import org.springframework.boot.SpringBootConfiguration;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * A sample {@link SpringBootConfiguration} with an example controller.
+ *
+ * @author Stephane Nicoll
+ */
+@SpringBootConfiguration
+@ImportAutoConfiguration({ EmbeddedServletContainerAutoConfiguration.class,
+ ServerPropertiesAutoConfiguration.class,
+ DispatcherServletAutoConfiguration.class, WebMvcAutoConfiguration.class,
+ JacksonAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class })
+class SampleWebClientConfiguration {
+
+
+ @RestController
+ private static class ExampleController {
+
+ @RequestMapping("/example")
+ public ResponseEntity example() {
+ return ResponseEntity.ok()
+ .location(URI.create("https://other.example.com/example"))
+ .body("test");
+ }
+
+ }
+
+}
diff --git a/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientTests.java b/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientTests.java
new file mode 100644
index 00000000000..67c1796f045
--- /dev/null
+++ b/spring-boot-docs/src/test/java/org/springframework/boot/web/client/SampleWebClientTests.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2012-2018 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.web.client;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+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.test.context.TestConfiguration;
+import org.springframework.boot.test.web.client.TestRestTemplate;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.HttpHeaders;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Example integration test that uses {@link TestRestTemplate}.
+ *
+ * @author Stephane Nicoll
+ */
+// tag::test[]
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+public class SampleWebClientTests {
+
+ @Autowired
+ private TestRestTemplate template;
+
+ @Test
+ public void testRequest() {
+ HttpHeaders headers = this.template.getForEntity("/example", String.class)
+ .getHeaders();
+ assertThat(headers.getLocation()).hasHost("other.example.com");
+ }
+
+ @TestConfiguration
+ static class Config {
+
+ @Bean
+ public RestTemplateBuilder restTemplateBuilder() {
+ return new RestTemplateBuilder()
+ .setConnectTimeout(1000)
+ .setReadTimeout(1000);
+ }
+
+ }
+
+}
+// end::test[]