diff --git a/README.md b/README.md index 6ece2c80..d04af99e 100644 --- a/README.md +++ b/README.md @@ -6,3 +6,4 @@ * *unit-testing-spring-boot* - то же самое, только на Spring Boot * *hibernate-fetch-mode-demo* - демонстрация настроек Hibernate, в частности для решения проблемы N+1 * *mongo-db-demo* - демонстрация подходов к хранению вложенных сущностенй в MongoDB, работы с MongoEventListener, агрегациями и инструментом миграций Mongock +* *docker-test-containers* - пример настройки TestContainers для монги diff --git a/docker-test-containers/.gitignore b/docker-test-containers/.gitignore new file mode 100644 index 00000000..153c9335 --- /dev/null +++ b/docker-test-containers/.gitignore @@ -0,0 +1,29 @@ +HELP.md +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ + +### VS Code ### +.vscode/ diff --git a/docker-test-containers/pom.xml b/docker-test-containers/pom.xml new file mode 100644 index 00000000..4c1284c9 --- /dev/null +++ b/docker-test-containers/pom.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.4.RELEASE + + + ru.otus + docker + 0.0.1-SNAPSHOT + docker + Demo project for Spring Boot + + + 11 + + + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-test + test + + + junit + junit + + + + + org.testcontainers + junit-jupiter + 1.11.2 + test + + + org.junit.jupiter + junit-jupiter + 5.4.0 + test + + + org.testcontainers + testcontainers + 1.11.2 + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/docker-test-containers/src/main/java/ru/otus/docker/DockerApplication.java b/docker-test-containers/src/main/java/ru/otus/docker/DockerApplication.java new file mode 100644 index 00000000..a5c1c587 --- /dev/null +++ b/docker-test-containers/src/main/java/ru/otus/docker/DockerApplication.java @@ -0,0 +1,13 @@ +package ru.otus.docker; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DockerApplication { + + public static void main(String[] args) { + SpringApplication.run(DockerApplication.class, args); + } + +} diff --git a/docker-test-containers/src/main/resources/application.properties b/docker-test-containers/src/main/resources/application.properties new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docker-test-containers/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/docker-test-containers/src/test/java/ru/otus/docker/DockerApplicationTests.java b/docker-test-containers/src/test/java/ru/otus/docker/DockerApplicationTests.java new file mode 100644 index 00000000..b56f47de --- /dev/null +++ b/docker-test-containers/src/test/java/ru/otus/docker/DockerApplicationTests.java @@ -0,0 +1,36 @@ +package ru.otus.docker; + +import com.mongodb.MongoClient; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import java.util.HashMap; + +@Testcontainers +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class DockerApplicationTests { + private MongoTemplate mongoTemplate; + @Container + public GenericContainer mongo = new GenericContainer("mongo").withExposedPorts(27017); + + @BeforeEach + public void before() throws Exception { + mongoTemplate = new MongoTemplate(new MongoClient(mongo.getContainerIpAddress(), mongo.getFirstMappedPort()), "test"); + } + + @Test + public void contextLoads() { + HashMap map = new HashMap<>(); + map.put("name", "Steve"); + mongoTemplate.save(map, "someCollection"); + } +}