Commit 499a29c4 authored by Phillip Webb's avatar Phillip Webb

Move "Testcontainers" How-to

See gh-26262
parent 72d50ed2
......@@ -2849,7 +2849,7 @@ howto.jedis-instead-of-lettuce
# 2 == Use Testcontainers for integration testing
howto-testcontainers=\
howto.testcontainers
howto.testing.testcontainers
......
......@@ -50,5 +50,3 @@ include::howto/build.adoc[]
include::howto/traditional-deployment.adoc[]
include::howto/jedis-instead-of-lettuce.adoc[]
include::howto/testcontainers.adoc[]
[[howto.testcontainers]]
== Use Testcontainers for integration testing
The https://www.testcontainers.org/[Testcontainers] library provides a way to manage services running inside Docker containers.
It integrates with JUnit, allowing you to write a test class that can start up a container before any of the tests run.
Testcontainers is especially useful for writing integration tests that talk to a real backend service such as MySQL, MongoDB, Cassandra etc.
Testcontainers can be used in a Spring Boot test as follows:
[source,java,indent=0,subs="verbatim"]
----
include::{docs-java}/howto/testcontainers/vanilla/MyIntegrationTests.java[]
----
This will start up a docker container running Neo4j (if Docker is running locally) before any of the tests are run.
In most cases, you will need to configure the application using details from the running container, such as container IP or port.
This can be done with a static `@DynamicPropertySource` method that allows adding dynamic property values to the Spring Environment.
[source,java,indent=0,subs="verbatim"]
----
include::{docs-java}/howto/testcontainers/dynamicproperties/MyIntegrationTests.java[]
----
The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container.
......@@ -18,3 +18,30 @@ include::{docs-java}/howto/testing/withspringsecurity/MySecurityTests.java[]
Spring Security provides comprehensive integration with Spring MVC Test and this can also be used when testing controllers using the `@WebMvcTest` slice and `MockMvc`.
For additional details on Spring Security's testing support, refer to Spring Security's {spring-security-docs}#test[reference documentation]).
[[howto.testing.testcontainers]]
=== Use Testcontainers for Integration Testing
The https://www.testcontainers.org/[Testcontainers] library provides a way to manage services running inside Docker containers.
It integrates with JUnit, allowing you to write a test class that can start up a container before any of the tests run.
Testcontainers is especially useful for writing integration tests that talk to a real backend service such as MySQL, MongoDB, Cassandra etc.
Testcontainers can be used in a Spring Boot test as follows:
[source,java,indent=0,subs="verbatim"]
----
include::{docs-java}/howto/testing/testcontainers/vanilla/MyIntegrationTests.java[]
----
This will start up a docker container running Neo4j (if Docker is running locally) before any of the tests are run.
In most cases, you will need to configure the application using details from the running container, such as container IP or port.
This can be done with a static `@DynamicPropertySource` method that allows adding dynamic property values to the Spring Environment.
[source,java,indent=0,subs="verbatim"]
----
include::{docs-java}/howto/testing/testcontainers/dynamicproperties/MyIntegrationTests.java[]
----
The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container.
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.docs.howto.testcontainers.dynamicproperties;
package org.springframework.boot.docs.howto.testing.testcontainers.dynamicproperties;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.Neo4jContainer;
......
......@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.springframework.boot.docs.howto.testcontainers.vanilla;
package org.springframework.boot.docs.howto.testing.testcontainers.vanilla;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.Neo4jContainer;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment