diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index 6319d37f22..e7eb5e981f 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -6093,29 +6093,30 @@ NOTE: If you directly use `@ComponentScan` (that is, not through -[[boot-features-testing-spring-boot-applications-working-with-random-ports]] -==== Working with Random Ports -If you need to start a full running server for tests, we recommend that you use random -ports. If you use `@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)`, an +[[boot-features-testing-spring-boot-applications-testing-with-running-server]] +==== Testing with a running server +If you need to start a full running server, we recommend that you use random ports. +If you use `@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)`, an available port is picked at random each time your test runs. The `@LocalServerPort` annotation can be used to <> into your test. For convenience, tests that need to make REST calls to the started server can -additionally `@Autowire` a `TestRestTemplate`, which resolves relative links to the -running server, as shown in the following example: +additionally `@Autowire` a +{spring-reference}testing.html#webtestclient-tests[`WebTestClient`], which resolves +relative links to the running server and comes with a dedicated API for verifying +responses, as shown in the following example: [source,java,indent=0] ---- -include::{code-examples}/test/web/RandomPortTestRestTemplateExampleTests.java[tag=test-random-port] +include::{code-examples}/test/web/RandomPortWebTestClientExampleTests.java[tag=test-random-port] ---- -If you prefer to use a {spring-reference}testing.html#webtestclient[`WebTestClient`], you -can use that as well: +Spring Boot also provides a `TestRestTemplate` facility: [source,java,indent=0] ---- -include::{code-examples}/test/web/RandomPortWebTestClientExampleTests.java[tag=test-random-port] +include::{code-examples}/test/web/RandomPortTestRestTemplateExampleTests.java[tag=test-random-port] ---- @@ -6389,6 +6390,9 @@ definition. A list of the auto-configuration settings that are enabled by `@WebMvcTest` can be <>. +TIP: Sometimes writing Spring MVC tests is not enough; Spring Boot can help you running +<>. [[boot-features-testing-spring-boot-applications-testing-autoconfigured-webflux-tests]] @@ -6452,6 +6456,9 @@ example shows a class that uses both `@WebFluxTest` and a `WebTestClient`: A list of the auto-configuration that is enabled by `@WebFluxTest` can be <>. +TIP: Sometimes writing Spring MVC tests is not enough; Spring Boot can help you running +<>. [[boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test]] @@ -7110,6 +7117,15 @@ for assertions, as follows: [[boot-features-rest-templates-test-utility]] ==== TestRestTemplate + +TIP: Spring Framework 5.0 provides a new `WebTestClient` that works for +<> and both +<>. It provides a fluent API for assertions, +unlike `TestRestTemplate`. + + `TestRestTemplate` is a convenience alternative to Spring's `RestTemplate` that is useful in integration tests. You can get a vanilla template or one that sends Basic HTTP authentication (with a username and password). In either case, the template behaves in a