Working with code R005
R005 - Unable to load class
The output code R005 generally means that we tried to load a class (e.g. a parameter type) in order to write a test, but failed to do so. This can occur in the context of unit tests for Spring, Java Enterprise Edition (and a few other examples) since some Maven/Gradle dependencies are not available at test
scope.
An additional reason that classes fail to load can be when the class in question has previously caused an R006 because the static initializer failed to run - often because it attempted to perform an I/O operation that Cover blocked, or timed out. If you've also seen an R006 for the same class then try to address that first by minimizing static initializer logic.
What’s a scope?
A Maven pom.xml
file or a Gradle build script (build.gradle
or build.gradle.kts
) specifies the steps necessary to create a software artifact from the source code. This includes managing the dependencies on third-party libraries and frameworks.
Both Maven and Gradle allow us to define different groups of dependencies. These dependency groups are called "scopes" in Maven and "configurations" in Gradle. Diffblue Cover uses test
scopes / configurations.
Maven Scope Dependencies
The dependency scopes available to Diffblue are: compile (default)
, runtime
, test
and provided
. However, the provided
scope is not transitive, which may be a cause of R005 errors. If Diffblue Cover reports that a class indirectly included by a dependency is missing, you can try to resolve this issue by including an additional reference to this indirect dependency at test
scope.
For further information on Maven dependency scopes, please see: Maven dependencies
Gradle Configuration Dependencies
Again, you must use the correct dependency configurations to avoid receiving the output code R005.
For further information on Gradle dependency configurations, please see: Gradle Configuration Dependencies
Last updated