Skip to content

Testing and Continuous Integration

ningxie edited this page May 30, 2021 · 9 revisions

Testing Tooling

Type Tool
Functional JUnit5
Functional Mockito
Coverage JaCoCo
Structural SonarQube

Continuous Integration

For continuous integration, we make use of GitHub Actions and set up the workflows as below.

GitHub Action Workflow Example
Java with Gradle Build and test with Gradle wrapper CI for browse-service
Build and Deploy to GKE Build a docker container, publish it to Google Container Registry, and deploy to GKE Deploy browse-service
SonarCloud Plugin Build and test with gradle and scan with SonarQube SonarCloud for browse-service

Java with Gradle workflow is used to build and test the back-end modules using Gradle wrapper and is triggered when commits are pushed to the develop branch for the corresponding subdirectory (i.e. browse-service or calculator-service). This workflow will only build and test each service individually when a change is made to them.

Build and Deploy to GKE workflow is used when changes are pushed to the develop branch to the corresponding service module. It is also used for the main branch when a release is scheduled.

SonarCloud Plugin workflow is triggered for the branches scan-browse-service and scan-calculator-service for SonarQube scanning.

JaCoCo Test Coverage

Service JaCoCo Test Report
browse-service coverage
calculator-service coverage

Quality Check by SonarQube

Code quality check is done by SonarQube integrated with GitHub CI actions.

Service SonarCloud Report
browse-service code quality report
calculator-service code quality report