为什么org.powermock:powermock-api-mockito:1.7.4取决于两个版本的Mockito-Core?

问题描述 投票:1回答:1

在运行Junit测试期间出现以下错误。

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)

我在搜索时发现的原因是,可能使用了多个版本的模仿,这似乎是事实。

gradle :commons:dependencies | grep mock

返回以下内容

\--- 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 (*)

为什么powermock 1.7.4依赖于mockito 1.10.19和2.8.9递归?

gradle junit mockito powermock powermockito
1个回答
0
投票

[org.powermock:powermock-api-mockito:1.7.4是针对模仿版本1.10.19编译的(1)

[org.powermock:powermock-api-mockito-common:1.7.4同时针对1.10.192.8.9进行编译,并提供mockito-core (2)]的依赖项>

[org.powermock:powermock-core:1.7.4是针对2.8.9编译的(3)

存在从模仿核心版本1.10.19到最新版本(当前为3.2.4)的更新路径。

Gradle发现存在冲突,所需的最低版本为2.8.9。那就是您在输出中看到的。 (也许此question可以帮助您理解语法。)


PowerMock 1.7.x需要至少2.8.9 (4)]的模拟版本>

但是将Mockito 2.8.9与powermock一起使用要求您使用powermock-api-mockito2,因此请在gradle配置中进行更改。 (5)

© www.soinside.com 2019 - 2024. All rights reserved.