LogoLogo
diffblue.comFree trial
  • Discover Diffblue Cover
  • Get Started
    • What is Diffblue Cover?
    • Get started
      • Free trial
      • Get started - Cover Plugin
      • Get started - Cover CLI
      • Get started - Cover Pipeline
      • Get started - Cover Reports
    • Specs & Reqs
    • Reference Deployments
    • Licensing
      • Online license activation
      • Offline license activation
      • Diffblue License Manager
    • Update Cover
    • FAQs
    • Diffblue Learning
      • Get started
        • Just the basics
        • Free trial
        • Cover Plugin (IDE)
        • Cover CLI (Command Line)
      • Developer
        • Unit tests (IDE)
        • Unit tests (CLI)
        • Test coverage
      • DevOps
        • GitHub
        • GitLab
        • Other CI
      • Administrator
        • Admin - IntelliJ
        • Admin - CLI
        • Admin - Reports
      • Test coverage
        • Developer
        • Senior developer
        • Cover Reports Administrator
  • EVALUATION & ONBOARDING
    • Proof of Value
    • Jumpstart
      • Prerequisites for onboarding
      • Phase 1: Up and running
        • Module 1: Create your Cover unit test baseline
        • Module 2: Cover Pipeline CI integration
      • Phase 2: Developer productivity
        • Module 3: Getting started using Cover
        • Module 4: Introduction to Cover Reports
      • Phase 3: Advanced topics
        • Module 5: Speed up your test execution
        • Module 6: Getting more from Cover
  • Features
    • Cover Plugin
      • Writing tests
        • Gutter icons
        • Menu options
        • Run configurations
        • Cover Plugin tool window
        • Test Review
        • Test examples
        • Creating partial tests
        • Creating skeleton tests
        • Covering all enum values
        • Test insertion order
        • Diffblue Sandbox
        • Environment Check Cache
      • Project configuration
        • General dependencies
        • Test framework dependencies
      • Cover Plugin settings
        • Test Naming
        • Test Formatting
        • Spring configuration options
        • Method Annotations
        • Test Directory
        • Reset Cover Plugin settings
      • Cover Plugin admin
        • Core Maintenance
        • Cover Plugin toolbar menu
        • Cover Plugin status bar widget
        • Telemetry
        • Memory management
        • Using SonarQube with Cover Plugin
        • Log files
        • Troubleshooting
    • Cover CLI
      • Writing tests
        • Command summary
        • Test examples
        • Creating partial tests
        • Customizing test inputs
        • Customizing test setup
        • Test naming
        • Test formatting
        • Test insertion order
        • Patch files
        • Diffblue Sandbox
        • Operational behaviors
        • Test validation
      • Project configuration
        • Preflight checks
        • General dependencies
        • Test framework dependencies
        • Compiling your project successfully
          • Building a Maven project
          • Building a Gradle project
        • Configuring Cover to work with your project's build system
          • Quick guide
          • Configuration file in detail
          • Getting Started with Ant Projects
          • Default configuration
        • Mocking using Mockito
        • Spring profiles
        • Runtime environment
      • Commands & Arguments
        • Environment configuration for CI
        • Packages, classes, and methods
        • Quoting command line arguments
        • Argument files
      • Cover CLI admin
        • Core Maintenance
        • Telemetry
        • Memory management
        • Using Cover CLI in Eclipse
        • Using SonarQube with Cover CLI
        • Log files
        • Troubleshooting
      • Environment Configuration
    • Cover Pipeline
      • Cover Pipeline for CI
        • Quick Start - General
        • Quick Start - Jenkins
        • Quick Start - Azure Pipelines
        • Quick Start - AWS Codebuild
        • Integrating Diffblue Cover into CI on pull requests
        • Installation - VMs or CI run
      • Cover Pipeline for GitLab
        • Introduction
        • Installation and initial setup
        • GitLab workflow
        • Configuration
        • Troubleshooting
        • Related topics
      • Cover Pipeline for GitHub
        • Introduction
        • Installation and initial setup
        • GitHub workflow
        • Configuration
        • Troubleshooting
        • Related topics
    • Cover Reports
      • Cover Reports Contributor
        • Java project config (JaCoCo)
        • Generate and upload reports bundles
        • Authenticated uploads
      • Cover Reports User
        • Navigation
        • Dashboards
        • Telemetry data
        • Export API
        • Considerations
      • Cover Reports Administrator
        • Install and update Cover Reports
        • Configuration options
        • Database backup
        • SSO with Cover Reports
        • Uninstall Cover Reports
    • Cover Optimize
      • Get started - Cover Optimize
      • Cover Optimize & Gradle
      • Cover Optimize & Maven
      • Patch files
    • Cover Refactor
      • Get started - Cover Refactor
    • Cover Annotations
      • Mocking Annotations
      • Custom Input Annotations
      • Interesting Value Annotations
    • Output Codes
      • E - Environment Codes
      • L - License Codes
      • R - Reason Codes
      • T - Testability Codes
      • V - Validation Codes
      • Working with output codes
        • Working with code E020
        • Working with codes E057 to E065
        • Working with code E085
        • Working with code R005
        • Working with code R006
        • Working with code R008
        • Working with code R011
        • Working with code R012
        • Working with code R013
        • Working with code R026
        • Working with code R031
        • Working with code V003
    • Tutorials
      • How to measure test quality
      • How to improve code coverage
      • How to test a new feature
      • How to find regressions
      • How to use Diffblue Cover in test driven development (TDD)
      • How to write tests for Kotlin projects
      • Examples of tests created by Diffblue Cover
      • Best practices for testing private methods
  • Updates & Upgrades
    • Update Cover
    • Cover Editions
    • What's new
    • Release archive
      • 2025-05-01
      • 2025-04-02
      • 2025-04-01
      • 2025-03-02
      • 2025-03-01
      • 2025-02-02
      • 2025-02-01
      • 2025-01-02
      • 2025-01-01
      • 2024-12-02
      • 2024-12-01
      • 2024-11-02
      • 2024-11-01
      • 2024-10-02
      • 2024-10-01
      • 2024-09-02
      • 2024-09-01
      • 2024-08-02
      • 2024-08-01
      • 2024-07-04
      • 2024-07-03
      • 2024-07-01
      • 2024-06-02
      • 2024-06-01
      • 2024-05-02
      • 2024-05-01
      • 2024-04-02
      • 2024-04-01
      • 2024-03-02
      • 2024-03-01
      • 2024-02-02
      • 2024-02-01
      • 2024-01-02
      • 2024-01-01
      • 2023-12-02
      • 2023-12-01
      • 2023-11-03
      • 2023-11-02
      • 2023-11-01
      • 2023-10-02
      • 2023-10-01
      • 2023-09-02
      • 2023-09-01
      • 2023-08-02
      • 2023-08-01
      • 2023-07-03
      • 2023-07-02
      • 2023-07-01
      • 2023-06-02
      • 2023-06-01
      • 2023-05-02
      • 2023-05-01
      • 2023-04-02
      • 2023-04-01
      • 2023-03-02
      • 2023-03-01
      • 2023-02-02
      • 2023-02-01
      • 2023-01-02
      • 2023-01-01
      • 2022-12-02
      • 2022-12-01
      • 2022-11-02
      • 2022-11-01
      • 2022-10-03
      • 2022-10-02
      • 2022-10-01
      • 2022-09-02
      • 2022-09-01
      • 2022-08-05
      • 2022-08-03
      • 2022-08-02
      • 2022-08-01
      • 2022-07-02
      • 2022-07-01
      • 2022-06-02
      • 2022-06-01
      • 2022-05-02
      • 2022-05-01
      • 2022-04-02
      • 2022-04-01
      • 2022-03-02
      • 2022-03-01
      • 2022-02-02
      • 2022-02-01
      • 2022-01-02
      • 2022-01-01
      • 2021-06-02
      • 2021-02-01
  • Legal
    • Diffblue Legal
      • Diffblue End User License Agreement (EULA)
      • Cover Third Party Notices and/or Licenses
      • Privacy Notice
Powered by GitBook
On this page
  • Higher-quality test code for methods involving generic types
  • Passing method type parameters instead of using casts when generating mocks
  • Easier to read mocking
  • Better variable naming for tests
  • IntelliJ IDEA 2023.1 support
  • Enhancements
  • Resolved Issues
  • Known Issues

Was this helpful?

Export as PDF
  1. Updates & Upgrades
  2. Release archive

2023-03-02

This release introduces a lot of improvements to the tests that Diffblue Cover automatically writes. Due to the large amount of code updates Diffblue will make, we suggest rerunning Diffblue Cover to create a new baseline set of tests for all of your projects.

Higher-quality test code for methods involving generic types

We have changed Cover to produce higher-quality test code when writing tests for methods involving generic types. In particular, we are more careful about preserving wildcards in type arguments.

In this release we have tweaked our test creation strategy in a few places which will result in many, intentional, changes to the test code written by Cover.

Passing method type parameters instead of using casts when generating mocks

Previously, where Cover would have written:

  when(ownerRepository.findById((Integer) any())).thenReturn(owner);

...it will now write:

  when(ownerRepository.findById(Mockito.<Integer>any())).thenReturn(owner);

Easier to read mocking

Cover no longer inserts casts before Mockito.mock; for instance, instead of:

  PostMetaServiceImpl postMetaService = new PostMetaServiceImpl(
      (BaseMetaRepository<PostMeta>) mock(BaseMetaRepository.class), mock(PostRepository.class));

...it will now write the simpler:

  PostMetaServiceImpl postMetaService = new PostMetaServiceImpl(mock(BaseMetaRepository.class),
      mock(PostRepository.class));

It's also worth noting that Cover now adds disambiguation casts more aggressively to distinguish between various overloads; in particular, you may see additional casts appear before null arguments.

Better variable naming for tests

The names of variables that Cover creates now more closely reflect their usage; for instance, instead of:

  Pet pet = new Pet();
  LocalDate ofResult = LocalDate.of(1970, 1, 1);
  pet.setBirthDate(ofResult);

...the ofResult is replaced with birthDate:

  Pet pet = new Pet();
  LocalDate birthDate = LocalDate.of(1970, 1, 1);
  pet.setBirthDate(birthDate);

When Cover creates more than one variable of the same type, it now uses more intuitive numbering. For example, for three variables of the same type, instead of:

  PetType petType = new PetType();
  PetType petType1 = new PetType();
  PetType petType2 = new PetType();

...the numbering of the second variable of the same type is 2, the third is numbered 3:

  PetType petType = new PetType();
  PetType petType2 = new PetType();
  PetType petType3 = new PetType();

IntelliJ IDEA 2023.1 support

Diffblue Cover now supports IntelliJ IDEA 2023.1 (Community and Ultimate). In keeping with our policy of supporting the current and previous release, Diffblue Cover now supports IntelliJ IDEA 2022.3 and 2023.1. Support for IntelliJ IDEA 2022.2 has been removed as of Diffblue Cover 2023.03.02.

Enhancements

  • IntelliJ Plugin: Cover now supports IntelliJ IDEA Community Edition 2023.1 and IntelliJ IDEA Ultimate 2023.1. [Ref: TG-18633]

  • Cover now produces more and better tests for code involving generics with wildcards. [Ref: TG-17479]

  • Cover now selects better parameters for streams that are relevant for the method under test. [Ref: TG-16964]

  • Cover now has an improved ability to derive variable names from method parameter names in the code under test. [Ref: TG-18804]

  • Cover now has improved support for Spring 4.1.1. [Ref: TG-18657]

  • Cover now writes easier to read tests for Spring Repository save(...) methods so that they only save in the Act phase of tests. [Ref: TG-18802]

  • Reports: Cover now has simplified and clearer reporting dashboards. [Ref: TG-18738]

Resolved Issues

  • Resolved an issue, which, in some circumstances, caused Cover to incorrectly report R011 (Sandboxing policy violation) instead of R020 (Temporary files were created but not deleted). [Ref: TG-18778]

  • Resolved an issue which caused dcover coverage-reports to report E084: JaCoCo command failed whilst using Surefire 3.0.0 when there are no existing manually written tests. [Ref: TG-18762]

  • Resolved an issue which, in some circumstances, would cause Cover to report com.diffblue.cover.exception.limitation.SpringContextCreationException: Failed to create Spring context using package [...]. [Ref: TG-18743]

  • Resolved an issue which, in some circumstances, caused Cover to report R024 (Analysis service shutdown unexpectedly) and R025 (Skipped due to previous failure). [Ref: TG-18742]

  • Resolved an issue which caused Cover to not exclude methods that throw InterruptedException from getters used in assertions. [Ref: TG-18723]

  • Resolved an issue which caused Cover to not consider using the current date as a test input, rather than just fixed dates. [Ref: TG-18710]

  • Resolved an issue which caused duplicate Detected Mockito version lines in the console and log files. [Ref: TG-18692]

  • CLI: Removed output code E106 (Multiple versions of dependencies) which provided a non-actionable output. [Ref: TG-18044]

Known Issues

  • Cover may produce tests for JUnit 4.10 and lower that do not compile due to the use of assertNotEquals. [Ref: TG-17605]

  • IntelliJ Plugin: Upgrading to IntelliJ IDEA 2022.3 may, in some circumstances, cause existing run configurations to no longer produce tests. Removing any run configurations for that entity and writing tests again will recreate a working run configuration. [Ref: TG-18282]

Previous2023-04-01Next2023-03-01

Last updated 1 year ago

Was this helpful?

Cover now allows factories with class parameters to be specified in DiffblueRules.yml. See the for more details. [Ref: TG-18761]

'Customizing test inputs' documentation