Run Unit Tests
Running unit tests in Codefresh pipelines
In this example we will see both ways using two different applications in a single pipeline.
In the first case we will run unit tests before creating the application docker image, while in the second case we will run unit tests inside the application Docker image.
The example Python/Go project
You can see the example project at https://github.com/codefreshdemo/cf-example-unit-test. The repository contains two applications (Python and Go) with their respective unit tests.
You can play with it locally by using Docker commands to package the applications.
Create a pipeline with Unit tests
Here is the whole pipeline:
This pipeline does the following:
- Clones the source code with a Git clone step
- Runs unit test for the GO application using the Dockerhub image
- Builds the Docker image for the Go application
- Builds the Docker image for the Python application
- Runs unit tests for the Python application using as runtime context the application image that was just created.
Notice that in the second case the tests run in the context of
build_before_my_tests which is the name of the step that creates the Docker image for Python. See context variables for more information on this technique.
We generally recommend the first approach, so that your production Docker image does not contain any unit testing libraries or frameworks, but there is no right or wrong choice regarding the way you run unit tests.