diff --git a/mongodb/aggregation/pom.xml b/mongodb/aggregation/pom.xml
index 8aa7407a..40e95f73 100644
--- a/mongodb/aggregation/pom.xml
+++ b/mongodb/aggregation/pom.xml
@@ -14,9 +14,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java
index a0ddac07..6d7d72fb 100644
--- a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java
+++ b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java
@@ -26,6 +26,12 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Sort;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration tests for {@link OrderRepository}.
@@ -35,9 +41,19 @@ import org.springframework.data.domain.Sort;
* @author Christoph Strobl
* @author Divya Srivastava
*/
+@Testcontainers
@SpringBootTest
class OrderRepositoryIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired OrderRepository repository;
private final static LineItem product1 = new LineItem("p1", 1.23);
diff --git a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java
index 0e77fb31..f7510405 100644
--- a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java
+++ b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/SpringBooksIntegrationTests.java
@@ -37,6 +37,12 @@ import org.springframework.data.mongodb.core.aggregation.ArrayOperators;
import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.Granularities;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Examples for Spring Books using the MongoDB Aggregation Framework. Data originates from Google's Book search.
@@ -47,9 +53,19 @@ import org.springframework.data.mongodb.core.query.Query;
* "https://www.googleapis.com/books/v1/volumes?q=intitle:spring+framework">https://www.googleapis.com/books/v1/volumes?q=intitle:spring+framework
* @see
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java
index 1778da61..c31f72ec 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java
@@ -25,20 +25,35 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
-import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Meta;
import com.mongodb.BasicDBObject;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
* @author Oliver Gierke
*/
+@Testcontainers
@DataMongoTest
class AdvancedIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired AdvancedRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java
index 104999f9..c11cbf44 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java
@@ -28,18 +28,33 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
-import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.script.ExecutableMongoScript;
import org.springframework.data.mongodb.core.script.NamedMongoScript;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
* @author Oliver Gierke
*/
+@Testcontainers
@DataMongoTest
class ServersideScriptTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:3.6"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired AdvancedRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java
index c0f04b63..681a44de 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java
@@ -31,15 +31,31 @@ import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.index.GeospatialIndex;
import org.springframework.data.querydsl.QSort;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test for {@link CustomerRepository}.
*
* @author Oliver Gierke
*/
+@Testcontainers
@DataMongoTest
class CustomerRepositoryIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired CustomerRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java
index 163ad62c..064f8c4f 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/immutable/ImmutableEntityIntegrationTest.java
@@ -22,8 +22,13 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
-import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test for {@link ImmutablePerson} showing features around immutable object support.
@@ -31,9 +36,19 @@ import org.springframework.data.mongodb.core.MongoOperations;
* @author Mark Paluch
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class ImmutableEntityIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
@BeforeEach
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java
index e0fb3765..cf1c43cc 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/projections/CustomerRepositoryIntegrationTest.java
@@ -28,15 +28,31 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.projection.TargetAware;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration tests for {@link CustomerRepository} to show projection capabilities.
*
* @author Oliver Gierke
*/
+@Testcontainers
@DataMongoTest
class CustomerRepositoryIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Configuration
@EnableAutoConfiguration
static class Config {}
diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java
index 3764e65c..a5b34871 100644
--- a/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java
+++ b/mongodb/example/src/test/java/example/springdata/mongodb/unwrapping/UnwrappingIntegrationTests.java
@@ -28,15 +28,31 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import com.mongodb.client.model.Filters;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration tests showing unwrapped/embedded document usage.
*
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class UnwrappingIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired UserRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/example/src/test/resources/application.properties b/mongodb/example/src/test/resources/application.properties
deleted file mode 100644
index 5239185a..00000000
--- a/mongodb/example/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
\ No newline at end of file
diff --git a/mongodb/fluent-api/pom.xml b/mongodb/fluent-api/pom.xml
index af289505..d6caf099 100644
--- a/mongodb/fluent-api/pom.xml
+++ b/mongodb/fluent-api/pom.xml
@@ -14,9 +14,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java b/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java
index 709e4dc3..23d38ec7 100644
--- a/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java
+++ b/mongodb/fluent-api/src/test/java/example/springdata/mongodb/fluent/FluentMongoApiTests.java
@@ -35,6 +35,12 @@ import org.springframework.data.mongodb.core.ExecutableFindOperation.Terminating
import org.springframework.data.mongodb.core.FluentMongoOperations;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.NearQuery;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Some tests showing usage and capabilities of {@link FluentMongoOperations}.
@@ -50,9 +56,19 @@ import org.springframework.data.mongodb.core.query.NearQuery;
*
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class FluentMongoApiTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired FluentMongoOperations mongoOps;
/**
diff --git a/mongodb/fluent-api/src/test/resources/application.properties b/mongodb/fluent-api/src/test/resources/application.properties
deleted file mode 100644
index 5239185a..00000000
--- a/mongodb/fluent-api/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
\ No newline at end of file
diff --git a/mongodb/geo-json/pom.xml b/mongodb/geo-json/pom.xml
index 1edffe10..8b89326c 100644
--- a/mongodb/geo-json/pom.xml
+++ b/mongodb/geo-json/pom.xml
@@ -19,9 +19,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java
index 1f454ce1..6a0533dc 100644
--- a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java
+++ b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java
@@ -28,6 +28,12 @@ import org.springframework.data.mongodb.core.geo.GeoJson;
import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;
import org.springframework.data.mongodb.core.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration tests for {@link StoreRepository}.
@@ -35,9 +41,19 @@ import org.springframework.data.mongodb.core.query.Criteria;
* @author Christoph Strobl
* @author Oliver Gierke
*/
+@Testcontainers
@DataMongoTest
class StoreRepositoryTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
private static final GeoJsonPolygon GEO_JSON_POLYGON = new GeoJsonPolygon(new Point(-73.992514, 40.758934),
new Point(-73.961138, 40.760348), new Point(-73.991658, 40.730006), new Point(-73.992514, 40.758934));
diff --git a/mongodb/geo-json/src/test/resources/application.properties b/mongodb/geo-json/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/geo-json/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/gridfs/pom.xml b/mongodb/gridfs/pom.xml
index f858b46d..a3cdd6b8 100644
--- a/mongodb/gridfs/pom.xml
+++ b/mongodb/gridfs/pom.xml
@@ -14,9 +14,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java b/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java
index aeca5f94..b8319c15 100644
--- a/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java
+++ b/mongodb/gridfs/src/test/java/example/springdata/mongodb/gridfs/GridFsTests.java
@@ -32,7 +32,13 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsOperations;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
import org.springframework.util.StreamUtils;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Tests to show the usage of {@link GridFsOperations} with Spring Data MongoDB.
@@ -40,9 +46,19 @@ import org.springframework.util.StreamUtils;
* @author Hartmut Lang
* @author Mark Paluch
*/
+@Testcontainers
@DataMongoTest
class GridFsTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired GridFsOperations gridFsOperations;
@BeforeEach
diff --git a/mongodb/gridfs/src/test/resources/application.properties b/mongodb/gridfs/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/gridfs/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/kotlin/pom.xml b/mongodb/kotlin/pom.xml
index 528ecda7..a20c50c4 100644
--- a/mongodb/kotlin/pom.xml
+++ b/mongodb/kotlin/pom.xml
@@ -39,9 +39,15 @@
test
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt
index f8fb7106..a1e38b63 100644
--- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt
+++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/FlowAndCoroutinesTests.kt
@@ -29,6 +29,12 @@ import org.springframework.data.mongodb.core.*
import org.springframework.data.mongodb.core.query.Criteria.where
import org.springframework.data.mongodb.core.query.Query
import org.springframework.data.mongodb.core.query.isEqualTo
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.MongoDBContainer
+import org.testcontainers.junit.jupiter.Container
+import org.testcontainers.junit.jupiter.Testcontainers
+import org.testcontainers.utility.DockerImageName
import reactor.test.StepVerifier
/**
@@ -36,9 +42,22 @@ import reactor.test.StepVerifier
*
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class FlowAndCoroutinesTests {
+ companion object {
+ @Container //
+ private val mongoDBContainer = MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"))
+
+ @JvmStatic
+ @DynamicPropertySource
+ fun setProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl }
+ }
+ }
+
@Autowired
lateinit var operations: ReactiveMongoOperations
diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt
index b4f35d47..86f56a96 100644
--- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt
+++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/MongoDslTests.kt
@@ -30,16 +30,35 @@ import org.springframework.data.mongodb.core.query.Criteria
import org.springframework.data.mongodb.core.query.Query
import org.springframework.data.mongodb.core.query.isEqualTo
import org.springframework.data.mongodb.core.query.regex
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
import org.springframework.test.context.junit4.SpringRunner
+import org.testcontainers.containers.MongoDBContainer
+import org.testcontainers.junit.jupiter.Container
+import org.testcontainers.junit.jupiter.Testcontainers
+import org.testcontainers.utility.DockerImageName
/**
* Tests showing the Mongo Criteria DSL.
*
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class MongoDslTests {
+ companion object {
+ @Container //
+ private val mongoDBContainer = MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"))
+
+ @JvmStatic
+ @DynamicPropertySource
+ fun setProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl }
+ }
+ }
+
@Autowired
lateinit var operations: MongoOperations
diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt
index e7fefdcf..ee5db181 100644
--- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt
+++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/RepositoryTests.kt
@@ -22,15 +22,34 @@ import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest
import org.springframework.dao.EmptyResultDataAccessException
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.MongoDBContainer
+import org.testcontainers.junit.jupiter.Container
+import org.testcontainers.junit.jupiter.Testcontainers
+import org.testcontainers.utility.DockerImageName
/**
* Tests showing Kotlin usage of Spring Data Repositories.
*
* @author Mark Paluch
*/
+@Testcontainers
@DataMongoTest
class RepositoryTests {
+ companion object {
+ @Container //
+ private val mongoDBContainer = MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"))
+
+ @JvmStatic
+ @DynamicPropertySource
+ fun setProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl }
+ }
+ }
+
@Autowired
lateinit var repository: PersonRepository
diff --git a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt
index 78f65fb3..73cc2c48 100644
--- a/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt
+++ b/mongodb/kotlin/src/test/kotlin/example/springdata/mongodb/people/TemplateTests.kt
@@ -25,15 +25,34 @@ import org.springframework.data.mongodb.core.*
import org.springframework.data.mongodb.core.query.Criteria.where
import org.springframework.data.mongodb.core.query.Query.query
import org.springframework.data.mongodb.core.query.isEqualTo
+import org.springframework.test.context.DynamicPropertyRegistry
+import org.springframework.test.context.DynamicPropertySource
+import org.testcontainers.containers.MongoDBContainer
+import org.testcontainers.junit.jupiter.Container
+import org.testcontainers.junit.jupiter.Testcontainers
+import org.testcontainers.utility.DockerImageName
/**
* Tests showing Kotlin usage of [MongoTemplate] and its Kotlin extensions.
*
* @author Mark Paluch
*/
+@Testcontainers
@DataMongoTest
class TemplateTests {
+ companion object {
+ @Container //
+ private val mongoDBContainer = MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"))
+
+ @JvmStatic
+ @DynamicPropertySource
+ fun setProperties(registry: DynamicPropertyRegistry) {
+ registry.add("spring.data.mongodb.uri") { mongoDBContainer.replicaSetUrl }
+ }
+ }
+
@Autowired
lateinit var operations: MongoOperations
diff --git a/mongodb/kotlin/src/test/resources/application.properties b/mongodb/kotlin/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/kotlin/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/linking/pom.xml b/mongodb/linking/pom.xml
index 338450de..36ca0528 100644
--- a/mongodb/linking/pom.xml
+++ b/mongodb/linking/pom.xml
@@ -14,9 +14,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java
index c6242800..c19f2428 100644
--- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java
+++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/dbref/DBRefTests.java
@@ -27,13 +27,29 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
public class DBRefTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
@Test
diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java
index f286d658..d98c86d6 100644
--- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java
+++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/jpastyle/JpaStyleDocRefTests.java
@@ -23,13 +23,29 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
public class JpaStyleDocRefTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
/**
diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java
index 67a1110d..7e14e0b5 100644
--- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java
+++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/query/QueryDocRefTests.java
@@ -26,13 +26,29 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
public class QueryDocRefTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
/**
diff --git a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java
index f01908dc..e1663f20 100644
--- a/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java
+++ b/mongodb/linking/src/test/java/example/springdata/mongodb/linking/docref/simple/SimpleDocRefTests.java
@@ -26,13 +26,29 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Update;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
public class SimpleDocRefTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
/**
diff --git a/mongodb/linking/src/test/resources/application.properties b/mongodb/linking/src/test/resources/application.properties
deleted file mode 100644
index 5239185a..00000000
--- a/mongodb/linking/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
\ No newline at end of file
diff --git a/mongodb/query-by-example/pom.xml b/mongodb/query-by-example/pom.xml
index 3aa7f79d..32db118e 100644
--- a/mongodb/query-by-example/pom.xml
+++ b/mongodb/query-by-example/pom.xml
@@ -13,9 +13,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java
index 0941d42c..a8ec34a6 100644
--- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java
+++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/ContactRepositoryIntegrationTests.java
@@ -25,6 +25,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.domain.Example;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories for a case
@@ -34,9 +40,19 @@ import org.springframework.data.mongodb.core.MongoOperations;
* @author Oliver Gierke
* @soundtrack Paul van Dyk - VONYC Sessions Episode 496 with guest Armin van Buuren
*/
+@Testcontainers
@DataMongoTest
class ContactRepositoryIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired UserRepository userRepository;
@Autowired ContactRepository contactRepository;
@Autowired MongoOperations mongoOperations;
diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java
index 884d5a08..76c9acf7 100644
--- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java
+++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/MongoOperationsIntegrationTests.java
@@ -34,6 +34,12 @@ import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher.StringMatcher;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories.
@@ -42,9 +48,19 @@ import org.springframework.data.mongodb.core.query.Query;
* @author Oliver Gierke
*/
@SuppressWarnings("unused")
+@Testcontainers
@DataMongoTest
class MongoOperationsIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
private Person skyler, walter, flynn, marie, hank;
diff --git a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java
index 2305aa99..cb4a58d5 100644
--- a/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java
+++ b/mongodb/query-by-example/src/test/java/example/springdata/mongodb/querybyexample/UserRepositoryIntegrationTests.java
@@ -28,6 +28,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher.*;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test showing the usage of MongoDB Query-by-Example support through Spring Data repositories.
@@ -37,9 +43,19 @@ import org.springframework.data.domain.ExampleMatcher.*;
* @author Jens Schauder
*/
@SuppressWarnings("unused")
+@Testcontainers
@DataMongoTest
class UserRepositoryIntegrationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired UserRepository repository;
private Person skyler, walter, flynn, marie, hank;
diff --git a/mongodb/query-by-example/src/test/resources/application.properties b/mongodb/query-by-example/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/query-by-example/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/querydsl/pom.xml b/mongodb/querydsl/pom.xml
index 62b15b49..7c6a6ecc 100644
--- a/mongodb/querydsl/pom.xml
+++ b/mongodb/querydsl/pom.xml
@@ -25,9 +25,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java b/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java
index 887cf8e7..aad71680 100644
--- a/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java
+++ b/mongodb/querydsl/src/test/java/example/springdata/mongodb/imperative/CustomerRepositoryTests.java
@@ -26,13 +26,29 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class CustomerRepositoryTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired CustomerQuerydslRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java b/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java
index e5adc1e2..b37e026b 100644
--- a/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java
+++ b/mongodb/querydsl/src/test/java/example/springdata/mongodb/reactive/ReactiveCustomerRepositoryTests.java
@@ -20,6 +20,12 @@ import static org.assertj.core.api.Assertions.*;
import example.springdata.mongodb.Customer;
import example.springdata.mongodb.QCustomer;
import org.junit.jupiter.api.Test;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.test.StepVerifier;
import java.util.Arrays;
@@ -33,9 +39,19 @@ import org.springframework.data.mongodb.core.MongoOperations;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class ReactiveCustomerRepositoryTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired ReactiveCustomerQuerydslRepository repository;
@Autowired MongoOperations operations;
diff --git a/mongodb/querydsl/src/test/resources/application.properties b/mongodb/querydsl/src/test/resources/application.properties
deleted file mode 100644
index 5239185a..00000000
--- a/mongodb/querydsl/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
\ No newline at end of file
diff --git a/mongodb/reactive/pom.xml b/mongodb/reactive/pom.xml
index 03813a35..50b775da 100644
--- a/mongodb/reactive/pom.xml
+++ b/mongodb/reactive/pom.xml
@@ -35,9 +35,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java
index 530260fa..7d589f73 100644
--- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java
+++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactiveMongoTemplateIntegrationTest.java
@@ -17,6 +17,12 @@ package example.springdata.mongodb.people;
import static org.assertj.core.api.Assertions.*;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;
import rx.RxReactiveStreams;
@@ -37,9 +43,19 @@ import org.springframework.data.mongodb.core.query.Query;
*
* @author Mark Paluch
*/
+@Testcontainers
@DataMongoTest
class ReactiveMongoTemplateIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired ReactiveMongoTemplate template;
@BeforeEach
diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java
index 3ecc7ff4..564f87a7 100644
--- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java
+++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/ReactivePersonRepositoryIntegrationTest.java
@@ -17,6 +17,12 @@ package example.springdata.mongodb.people;
import static org.assertj.core.api.Assertions.*;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -37,9 +43,19 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations;
*
* @author Mark Paluch
*/
+@Testcontainers
@DataMongoTest
class ReactivePersonRepositoryIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired ReactivePersonRepository repository;
@Autowired ReactiveMongoOperations operations;
diff --git a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java
index b29dca01..72a22159 100644
--- a/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java
+++ b/mongodb/reactive/src/test/java/example/springdata/mongodb/people/RxJava2PersonRepositoryIntegrationTest.java
@@ -19,6 +19,12 @@ import static org.assertj.core.api.Assertions.*;
import io.reactivex.Flowable;
import io.reactivex.Single;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -42,9 +48,19 @@ import org.springframework.data.mongodb.core.ReactiveMongoOperations;
* @author Jens Schauder
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class RxJava2PersonRepositoryIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired RxJava2PersonRepository repository;
@Autowired ReactiveMongoOperations operations;
diff --git a/mongodb/reactive/src/test/resources/application.properties b/mongodb/reactive/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/reactive/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/repository-metrics/pom.xml b/mongodb/repository-metrics/pom.xml
index 2621e897..3514f645 100644
--- a/mongodb/repository-metrics/pom.xml
+++ b/mongodb/repository-metrics/pom.xml
@@ -28,9 +28,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/repository-metrics/src/main/resources/application.properties b/mongodb/repository-metrics/src/main/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/repository-metrics/src/main/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java b/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java
index 3a4adca9..339ab782 100644
--- a/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java
+++ b/mongodb/repository-metrics/src/test/java/example/springdata/mongodb/DemoApplicationTests.java
@@ -15,6 +15,12 @@
*/
package example.springdata.mongodb;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
import reactor.test.StepVerifier;
import java.time.Duration;
@@ -30,9 +36,19 @@ import org.springframework.boot.test.context.SpringBootTest;
*
* @author Christoph Strobl
*/
+@Testcontainers
@SpringBootTest
class DemoApplicationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired PersonRepository repo;
@Test
diff --git a/mongodb/schema-validation/pom.xml b/mongodb/schema-validation/pom.xml
index 40006c8a..3531f59c 100644
--- a/mongodb/schema-validation/pom.xml
+++ b/mongodb/schema-validation/pom.xml
@@ -14,9 +14,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java
index 8d7c36d3..dc7076d2 100644
--- a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java
+++ b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/DocumentValidationTests.java
@@ -29,13 +29,29 @@ import org.springframework.data.mongodb.core.CollectionOptions;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.schema.MongoJsonSchema;
import org.springframework.data.mongodb.core.validation.Validator;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class DocumentValidationTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
private static final String COLLECTION = "star-wars";
@Autowired MongoOperations mongoOps;
diff --git a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java
index 345b060a..28c40cfa 100644
--- a/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java
+++ b/mongodb/schema-validation/src/test/java/example/springdata/mongodb/schema/SchemaQueryTests.java
@@ -27,13 +27,29 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.schema.MongoJsonSchema;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
*/
+@Testcontainers
@DataMongoTest
class SchemaQueryTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
private static final String COLLECTION = "star-wars";
@Autowired MongoOperations mongoOps;
diff --git a/mongodb/schema-validation/src/test/resources/application.properties b/mongodb/schema-validation/src/test/resources/application.properties
deleted file mode 100644
index 8ddb707b..00000000
--- a/mongodb/schema-validation/src/test/resources/application.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-spring.mongodb.embedded.features=ONLY_64BIT,NO_HTTP_INTERFACE_ARG,NO_CHUNKSIZE_ARG,SYNC_DELAY,ONLY_WITH_SSL
-spring.mongodb.embedded.version=4.0.1
\ No newline at end of file
diff --git a/mongodb/security/pom.xml b/mongodb/security/pom.xml
index ee5d45ae..6fee76cf 100644
--- a/mongodb/security/pom.xml
+++ b/mongodb/security/pom.xml
@@ -24,9 +24,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java
index 8ada00b8..bd04a227 100644
--- a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java
+++ b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java
@@ -27,6 +27,12 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration test for {@link PersonRepository}.
@@ -34,9 +40,19 @@ import org.springframework.security.core.context.SecurityContextHolder;
* @author Thomas Darimont
* @author Oliver Gierke
*/
+@Testcontainers
@SpringBootTest
class PersonRepositoryIntegrationTest {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired PersonRepository repository;
private Person dave, oliver, carter, admin;
diff --git a/mongodb/security/src/test/resources/application.properties b/mongodb/security/src/test/resources/application.properties
deleted file mode 100644
index 2a85020f..00000000
--- a/mongodb/security/src/test/resources/application.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-# Random port for embedded MongoDB
-spring.data.mongodb.port=0
-spring.mongodb.embedded.version=3.6.0
diff --git a/mongodb/text-search/pom.xml b/mongodb/text-search/pom.xml
index ee517a7e..500d9f52 100644
--- a/mongodb/text-search/pom.xml
+++ b/mongodb/text-search/pom.xml
@@ -20,9 +20,15 @@
- de.flapdoodle.embed
- de.flapdoodle.embed.mongo
- provided
+ org.testcontainers
+ junit-jupiter
+ test
+
+
+ org.testcontainers
+ mongodb
+ ${testcontainers.version}
+ test
diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java
index 9cd7428d..a6a9dbfd 100644
--- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java
+++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java
@@ -23,6 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.mapping.TextScore;
import org.springframework.data.mongodb.core.query.TextCriteria;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* Integration tests showing the text search functionality using repositories.
@@ -31,9 +37,19 @@ import org.springframework.data.mongodb.core.query.TextCriteria;
* @author Oliver Gierke
* @author Thomas Darimont
*/
+@Testcontainers
@DataMongoTest
class TextSearchRepositoryTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired BlogPostRepository repo;
/**
diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java
index 5072a66a..88236862 100644
--- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java
+++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java
@@ -25,14 +25,30 @@ import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.TextCriteria;
import org.springframework.data.mongodb.core.query.TextQuery;
+import org.springframework.test.context.DynamicPropertyRegistry;
+import org.springframework.test.context.DynamicPropertySource;
+import org.testcontainers.containers.MongoDBContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.utility.DockerImageName;
/**
* @author Christoph Strobl
* @author Thomas Darimont
*/
+@Testcontainers
@DataMongoTest
class TextSearchTemplateTests {
+ @Container //
+ private static MongoDBContainer mongoDBContainer = new MongoDBContainer(
+ DockerImageName.parse("mongo:5.0"));
+
+ @DynamicPropertySource
+ static void setProperties(DynamicPropertyRegistry registry) {
+ registry.add("spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
+ }
+
@Autowired MongoOperations operations;
/**
diff --git a/mongodb/text-search/src/test/resources/application.properties b/mongodb/text-search/src/test/resources/application.properties
deleted file mode 100644
index 2215a345..00000000
--- a/mongodb/text-search/src/test/resources/application.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-logging.level.example.springdata=INFO
-spring.mongodb.embedded.version=3.6.0
\ No newline at end of file