From 1f8d489e5a43b920b3e7e6c9e642ebe6400d8d7e Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Wed, 14 Feb 2018 15:39:48 +0100 Subject: [PATCH] Improve reference doc for WebTestClient Closes gh-11203 --- .../main/asciidoc/spring-boot-features.adoc | 44 +++++++++++++------ 1 file changed, 30 insertions(+), 14 deletions(-) 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,31 +6093,32 @@ 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: - -[source,java,indent=0] ----- -include::{code-examples}/test/web/RandomPortTestRestTemplateExampleTests.java[tag=test-random-port] ----- - -If you prefer to use a {spring-reference}testing.html#webtestclient[`WebTestClient`], you -can use that as well: +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/RandomPortWebTestClientExampleTests.java[tag=test-random-port] ---- +Spring Boot also provides a `TestRestTemplate` facility: + +[source,java,indent=0] +---- +include::{code-examples}/test/web/RandomPortTestRestTemplateExampleTests.java[tag=test-random-port] +---- + [[boot-features-testing-spring-boot-applications-mocking-beans]] ==== Mocking and Spying Beans @@ -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