# 2025-09-02

This release introduces support for OSGi and experimental support for Java 24 and 25, improves CLI performance for multi-module Maven projects, and enhances test quality by refining disabled class and test annotation handling.

***

## New Framework & Language Support

* **OSGi Support:** Diffblue Cover now generates tests for OSGi code. To enhance test coverage, Cover automatically uses the `org.osgi.service.component.annotations` dependency when it is available in the project.
* **Java 24 & 25 Support:** This release provides experimental support for writing tests for applications built with Java 24 and Java 25. Full production support continues for Java versions 8, 11, 17, and 21.

## Performance & Usability

* **Faster CLI Performance:** Test creation using the CLI is now significantly faster for Maven projects, especially multi-module projects. When a prefix entry point is used, Cover now also performs automatic module selection, removing the need for the `--include-modules` argument.
* **IntelliJ Plugin Fix:** Resolved an issue in the IntelliJ Plugin where the 'Update test' gutter icon could fail to start a test update operation.

## Improved Test Quality & Management

* **Disabled Test Class Handling:** When merging tests, Diffblue Cover now prevents adding new tests to disabled test classes. This change avoids generating tests that would not run and instead reports an output code (R089) for the affected class.
* **Test Review Annotation:** Resolved an issue in the Test Review feature where formatting-only edits caused Diffblue Cover to remove the `@ManagedByDiffblue` annotation. This ensures that tests remain managed by Cover unless substantive code changes are made.

***

## Important Notices

### Prerequisite: Project Compilation

Due to recent build system optimizations, building your project remains an essential prerequisite for running Diffblue Cover. A compiled project is required for Cover to analyze code and generate tests successfully.

For detailed instructions, see the documentation for building a [Maven project](https://docs.diffblue.com/features/cover-cli/project-configuration/compiling-your-project/building-a-maven-project) and a [Gradle project](https://docs.diffblue.com/features/cover-cli/project-configuration/compiling-your-project/building-a-gradle-project).

***

## Enhancements

* CLI: Diffblue Cover now provides significant speed improvements for multi-module projects when a prefix entry point is used. Module selection is now automatic in this scenario, removing the need to specify the `--include-modules` CLI argument. \[Ref: TG-23781]
* Diffblue Cover no longer adds new tests to disabled test classes when merging tests. Instead, it reports an error (R089) for the affected class. \[Ref: TG-23744]
* CLI: Diffblue Cover now runs significantly faster when creating tests for Maven projects. Users with multi-module projects will see the most noticeable performance improvements when using CLI commands like `dcover create`. \[Ref: TG-23714]
* Diffblue Cover now supports test generation for OSGi applications and automatically uses the `org.osgi.service.component.annotations` dependency, when available, to improve test coverage. \[Ref: TG-23699]
* Diffblue Cover now provides experimental test writing support for applications built with Java 24 and Java 25. Full support continues for Java versions 8, 11, 17, and 21. \[Ref: TG-22920]

## Resolved Issues

* Plugin: Resolved an issue in the IntelliJ Plugin where the 'Update test' gutter icon could fail to start a test update operation in certain edge cases. \[Ref: TG-23748]
* Resolved an issue in the Test Review feature where formatting-only edits caused Diffblue Cover to remove the `@ManagedByDiffblue` annotation. This ensures that tests remain managed by Diffblue Cover unless substantive code changes are made by the user. \[Ref: TG-23738]

## Known Issues

* Plugin: Diffblue Cover incorrectly displays a menu option to write tests for existing test files. \[Ref: TG-17163]
* Cover supports Open JDK and Oracle JDK; results with other JDKs may differ due to the variability in their implementations of Java. \[Ref: TG-19345]
* Cover may encounter an `F009` (Internal error) caused by a `ClassCircularityError` involving `org/mockito/configuration/MockitoConfiguration` when writing tests with Mockito 5. The recommended workaround is to downgrade to Mockito 4.x. \[Ref: TG-19610]
* Reports: Cover only counts Java code towards the total line count metrics. Kotlin code is not currently included. \[Ref: TG-22088]
* Reports: Total lines of code metric can incorrectly count a multi-line comment at the end of a line of code, resulting in fewer than expected lines counted. \[Ref: TG-22089]
* Reports: Following an upgrade, the 'Total Lines of Code' card may show 0 until a new reports bundle has been uploaded. \[Ref: TG-22094]
* Cover may write more simplistic tests with less meaningful assertions when Spring Boot dependency injection is disabled. \[Ref: TG-22102]
* In some circumstances, Cover will still write Spring Boot tests when Spring Boot dependency injection is disabled. \[Ref: TG-22103]
* Cover may write failing TestNG tests when Spring Boot dependency injection is disabled. \[Ref: TG-22107]
* Plugin: On some displays, the Test Review subsection title 'Tests for review' is malformed. \[Ref: TG-22805]
* When test formatting settings are changed, the Test Review feature may incorrectly remove the `@ManagedByDiffblue` annotation from tests, particularly in cases involving static import formatting changes. \[Ref: TG-23750]


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cover-docs-preview.diffblue.com/updates-and-upgrades/release-archive/2025-09-02.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
