From c63dbe7eb80c42ad74d50442a045f1c9504880d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Fri, 28 Nov 2025 15:14:54 +0100 Subject: [PATCH] Document LocalTestWebServer Closes gh-48333 --- .../modules/how-to/pages/webserver.adoc | 13 ++++++ .../MyWebIntegrationTests.java | 40 +++++++++++++++++++ .../MyWebIntegrationTests.kt | 37 +++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.java create mode 100644 documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.kt diff --git a/documentation/spring-boot-docs/src/docs/antora/modules/how-to/pages/webserver.adoc b/documentation/spring-boot-docs/src/docs/antora/modules/how-to/pages/webserver.adoc index 84b660a3d0e..09f4b0f79fc 100644 --- a/documentation/spring-boot-docs/src/docs/antora/modules/how-to/pages/webserver.adoc +++ b/documentation/spring-boot-docs/src/docs/antora/modules/how-to/pages/webserver.adoc @@ -165,6 +165,19 @@ Contrary to a test, application code callbacks are processed early (before the v +[[howto.webserver.build-uri-test-web-server]] +== Build URI Against the Test Web Server + +Tests that start a javadoc:org.springframework.boot.web.server.WebServer[] such as `@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)` can get information about +the running server using javadoc:org.springframework.boot.test.http.server.LocalTestWebServer[], as shown in the following example: + +include-code::MyWebIntegrationTests[] + +javadoc:org.springframework.boot.test.http.server.LocalTestWebServer[] provides access to a suitable javadoc:org.springframework.web.util.UriBuilderFactory[]. +It can also be customized to build such an instance on a sub-path of your application. + + + [[howto.webserver.enable-response-compression]] == Enable HTTP Response Compression diff --git a/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.java b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.java new file mode 100644 index 00000000000..98bc89542ca --- /dev/null +++ b/documentation/spring-boot-docs/src/main/java/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.java @@ -0,0 +1,40 @@ +/* + * Copyright 2012-present 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 org.springframework.boot.docs.howto.webserver.builduritestwebserver; + +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.test.http.server.LocalTestWebServer; +import org.springframework.context.ApplicationContext; + +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +class MyWebIntegrationTests { + + @Autowired + ApplicationContext context; + + // ... + + @Test + void test() { + String urlToTest = LocalTestWebServer.obtain(this.context).uri("/test"); + } + +} diff --git a/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.kt b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.kt new file mode 100644 index 00000000000..804cd23de75 --- /dev/null +++ b/documentation/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/howto/webserver/builduritestwebserver/MyWebIntegrationTests.kt @@ -0,0 +1,37 @@ +/* + * Copyright 2012-present 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 org.springframework.boot.docs.howto.webserver.builduritestwebserver + +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.test.http.server.LocalTestWebServer +import org.springframework.context.ApplicationContext + +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +class MyWebIntegrationTests(@Autowired val context: ApplicationContext) { + + // ... + + @Test + fun test() { + val urlToTest = LocalTestWebServer.obtain(this.context).uri("/test") + } + +} +