Add a testcontainers section in the reference docs
Closes gh-20734
This commit is contained in:
@@ -2947,3 +2947,48 @@ The following example shows how to do so in Gradle:
|
||||
// ...
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
|
||||
[[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,quotes,attributes"]
|
||||
----
|
||||
@SpringBootTest
|
||||
@Testcontainers
|
||||
class ExampleIntegrationTests {
|
||||
|
||||
@Container
|
||||
static Neo4jContainer<?> neo4j = new Neo4jContainer<>();
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
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 adding dynamic property values to the Spring Environment.
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
@SpringBootTest
|
||||
@Testcontainers
|
||||
class ExampleIntegrationTests {
|
||||
|
||||
@Container
|
||||
static Neo4jContainer<?> neo4j = new Neo4jContainer<>();
|
||||
|
||||
@DynamicPropertySource
|
||||
static void neo4jProperties(DynamicPropertyRegistry registry) {
|
||||
registry.add("spring.data.neo4j.uri", neo4j::getBoltUrl);
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
The above configuration allows Neo4j-related beans in the application to communicate with Neo4j running inside the Testcontainers-managed Docker container.
|
||||
|
||||
Reference in New Issue
Block a user