/coffee-example

Primary LanguageJavaApache License 2.0Apache-2.0

Effective Testing & Test Automation

Some projects for my presentations on effective enterprise testing.

The example projects contain a coffee-shop application, which uses the coffee-shop-db database, and a barista backend application.

Running

You run the environment, containing the coffee-shop, barista applications and the coffee-shop-db using Docker containers.

In order to run the Docker containers locally, you need to create a Docker network first:

docker network create --subnet=192.168.42.0/24 dkrnet

Then you can build the coffee-shop project and run the environment as follows:

./local-build.sh
./local-run-env.sh

You can access the coffee-shop application using HTTP, after the applications have been started:

curl localhost:8001/coffee-shop/
curl localhost:8001/coffee-shop/orders

You create new coffee orders by POST-ing the JSON representation of a new order:

curl localhost:8001/coffee-shop/orders -i \
  -XPOST \
  -H 'Content-Type: application/json' \
  -d '{"type":"Espresso","origin":"Colombia"}'

INFO: To stop and clean up the containers again, run: docker stop coffee-shop barista coffee-shop-db

Running the tests

You run the non-integration tests by executing mvn verify, or mvn package (any goal that executes Maven’s test phase):

cd coffee-shop/
mvn verify

You run the system integration tests (smoke tests) from the same directory. The application needs to be deployed locally (local-run-env.sh):

# if not already running
../local-run-env.sh
mvn test-compile failsafe:integration-test failsafe:verify

You can run the systems tests either in a Kubernetes environment or using plain Docker containers.

System tests on local Docker containers

You run the system test environment by executing systemtest-run-env.sh in the root directory:

./systemtest-run-env.sh

This starts up the coffee-shop application, the coffee-shop-db database, and a barista mock server (WireMock).

The system tests contained in coffee-shop-st/ will run against that deployed environment:

cd coffee-shop-st/
mvn verify

INFO: To stop and clean up the system test containers again, run: docker stop coffee-shop barista coffee-shop-db