Diffblue Cover
You can integrate the Diffblue Cover reinforcement learning AI tool into your CI/CD pipelines, to automatically write and maintain Java unit tests for your GitLab projects. The Diffblue Cover Pipeline for GitLab integration allows you to automatically:
- Write a baseline unit test suite for your projects.
- Write new unit tests for new code.
- Update existing unit tests in your code.
- Remove existing unit tests in your code when they’re no longer required.
Configure the integration
To integrate Diffblue Cover into your pipeline:
- Find and configure the Diffblue Cover integration.
- Configure a pipeline for a sample project using the GitLab pipeline editor and the Diffblue Cover pipeline template.
- Create a full baseline unit test suite for the project.
Configure Diffblue Cover
- On the left sidebar, select Search or go to and find your project.
- If you want to test the integration with a sample project, you can import the Diffblue Spring PetClinic sample project.
- Select Settings > Integrations.
- Find Diffblue Cover and select Configure.
-
Complete the fields:
- Select the Active checkbox.
- Enter your Diffblue Cover License key provided in your welcome email or by your organization. If needed, select the Try Diffblue Cover link to sign up for a free trial.
-
Enter details of your GitLab access token (Name and Secret) to allow Diffblue Cover to access your project. In general, use a GitLab project access token with the
Developer
role, plusapi
andwrite_repository
scopes. If necessary you can use a group access token or a personal access token, again with theDeveloper
role, plusapi
andwrite_repository
scopes.Using an access token with excessive permissions is a security risk. If you use a Personal access token, consider creating a dedicated user with access limited to just the project, minimizing the impact of the token being leaked.
- Select Save changes. Your Diffblue Cover integration is now **Active** and ready for use in your project.
Configure a pipeline
Here we’ll create a merge request pipeline for the project that will download the latest version of Diffblue Cover, build the project, write Java unit tests for the project, and commit the changes to the branch.
- On the left sidebar, select Search or go to and find your project.
-
Copy the contents of the
Diffblue-Cover.gitlab-ci.yml
template into your project’s.gitlab-ci.yml
file.When using the Diffblue Cover pipeline template with your own project and existing pipeline file, add the Diffblue template content to your file and modify as needed. For more information, see Cover Pipeline for GitLab in the Diffblue documentation. - Enter a commit message.
- Enter a new Branch name. For example,
add-diffblue-cover-pipeline
. - Select Start a new merge request with these changes.
- Select Commit changes.
Create a baseline unit test suite
- In the New merge request form, enter a Title (for example, “Add Cover pipeline and create baseline unit test suite”) and fill out the other fields.
- Select Create merge request. The merge request pipeline runs Diffblue Cover to create the baseline unit test suite for the project.
- Once the pipeline completes, the changes can be reviewed from the Changes tab. When you’re happy, merge the updates to your repo. Go to the
src/test
folders in the project repository to see the unit tests created by Diffblue Cover (suffixed with*DiffblueTest.java
).
Subsequent code changes
When performing subsequent code changes to a project, the merge request pipeline will run Diffblue Cover but will only update the associated tests. The resulting diff can then be analyzed to check the new behavior, catch regressions, and spot any unplanned behavioral changes to the code.
Next steps
This topic demonstrates some of the key features of Cover Pipeline for GitLab and how to use the integration in a pipeline.
The wider and deeper functionality, provided through dcover
commands in the pipeline template, can be implemented to expand your unit test capabilities even further.
For more information, see Cover Pipeline for GitLab in the Diffblue documentation.