2

I am getting the following error during the run of Junit tests.

java.lang.NoClassDefFoundError: org/mockito/cglib/proxy/MethodInterceptor

    at org.powermock.api.mockito.PowerMockito.mock(PowerMockito.java:141)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

The reason I found while searching was that there might be multiple versions of mockito being used and it seems to be true.

gradle :commons:dependencies | grep mock

returns following

\--- org.powermock:powermock-api-mockito:1.7.4
     +--- org.powermock:powermock-api-mockito-common:1.7.4
     |    +--- org.powermock:powermock-api-support:1.7.4
     |    |    +--- org.powermock:powermock-reflect:1.7.4
     |    |    \--- org.powermock:powermock-core:1.7.4
     |    |         +--- org.powermock:powermock-reflect:1.7.4 (*)
     |    |         \--- org.mockito:mockito-core:2.8.9 (*)
     |    \--- org.mockito:mockito-core:2.8.9 (*)
     \--- org.mockito:mockito-core:1.10.19 -> 2.8.9 (*)

Why powermock 1.7.4 is recursively depending on mockito 1.10.19 and 2.8.9?

Shashwat Kumar
  • 5,159
  • 2
  • 30
  • 66

1 Answers1

0

org.powermock:powermock-api-mockito:1.7.4 is compiled against mockito version 1.10.19 (1)

org.powermock:powermock-api-mockito-common:1.7.4 is compiled against both 1.10.19 and 2.8.9 and provides a dependency of mockito-core (2)

org.powermock:powermock-core:1.7.4 is compiled against 2.8.9 (3)

There is an update path from mockito-core version 1.10.19 to the recent version (currently 3.2.4).

Gradle discovers that there is a conflict and the minimum required version is 2.8.9. Thats what you see in the output. (Maybe this question can help you understand the syntax.)


PowerMock 1.7.x requires a mockito version of at least 2.8.9 (4)

However using Mockito 2.8.9 together with powermock requires you to use powermock-api-mockito2, so change that in your gradle config. (5)

second
  • 4,069
  • 2
  • 9
  • 24