java type_error ai_generated true

org.mockito.exceptions.base.MockitoException: Cannot mock/spy class com.example.FinalClass because Mockito cannot mock final classes

ID: java/mockito-spy-on-final-class

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2024-05-08First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
8+ active

Root Cause

Mockito cannot mock or spy on final classes by default (requires mockito-inline or Mockito 5+).

generic

中文

Mockito 默认无法模拟或间谍化最终类(需要 mockito-inline 或 Mockito 5+)。

Workarounds

  1. 90% success Use Mockito 5+ which supports mocking final classes by default
    // Upgrade to Mockito 5.x in build.gradle
    // testImplementation 'org.mockito:mockito-core:5.0.0'
  2. 85% success Add mockito-inline dependency
    // Add to build.gradle
    // testImplementation 'org.mockito:mockito-inline:5.2.0'

Dead Ends

Common approaches that don't work:

  1. Removing final keyword from production code 50% fail

    Changes production code design; may not be allowed.

  2. Using PowerMockito 40% fail

    Adds heavy dependency and may cause compatibility issues.