This demo is deprecated. You can found an actual version here
Simple example demonstrating how testcontainers, Elasticsearch and JUnit 5 can play together.
- Spring Boot 2.5.1
- Kotlin 1.5.10
- Elasticsearch 7.10.1 with RestHighLevelClient
- Testcontainers 1.15.3
- JUnit 5.7.2
- Java 11
- Maven >= 3.2.1 (Kotlin comes as maven dependency)
- Docker >= 3.0 (for integration tests)
Integration test TweetControllerIT
will be started in maven phase verify
.
$ git clone https://github.com/larmic/testcontainers-junit5
$ mvn clean verify
# start local elasticsearch
$ docker run -d -p 9200:9200 -p 9300:9300 --name testcontainers-junit5-demo -e "discovery.type=single-node" -e "xpack.security.enabled=false" -e "cluster.name=elasticsearch" docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.1
# start application
$ mvn spring-boot:run
# HTTP request examples
# Get all tweets
$ curl -i -H "Accept: application/json" --request GET http://localhost:8080/
# Post a new tweet
$ curl -i -H "Content-Type: application/json" --request POST --data 'hello, this is a tweet!' http://localhost:8080/
# Read a specific tweet
$ curl -i -H "Accept: application/json" --request GET http://localhost:8080/{tweet-id}
# Delete a specific tweet
$ curl -i -H "Accept: application/json" --request DELETE http://localhost:8080/{tweet-id}
# Update a specific tweet
$ curl -i -H "Content-Type: application/json" "Accept: application/json" --request PUT --data 'hello, this is a changed tweet!' http://localhost:8080/{tweet-id}