You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK1.8环境下PowerMock与Mockito版本不兼容问题求助

问题分析与解决方案

错误原因

你遇到的java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework;是版本兼容冲突导致的:

  • PowerMock 2.0.9依赖的是Mockito 2.x版本,而Mockito.framework()方法是Mockito 2.x才新增的API;
  • 你当前使用的mockito-all:1.10.19属于Mockito 1.x系列,根本没有这个方法,因此触发了方法找不到的错误。

两种方案都可以解决这个问题,具体选择取决于你是否愿意改动现有Mockito测试代码:


方案一:升级Mockito版本(推荐)

Mockito 2.x之后已经不再维护mockito-all这个聚合依赖,建议替换为mockito-core,同时选择和PowerMock 2.0.9兼容的Mockito版本(PowerMock 2.0.9支持Mockito 2.8.47~3.3.3区间版本,推荐选2.28.2)。

调整后的POM依赖如下:

<!-- 替换原有的mockito-all,使用Mockito 2.x的核心依赖 -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.28.2</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-testng</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>2.0.9</version>
    <scope>test</scope>
</dependency>

注意:如果项目中有其他依赖间接引入旧版Mockito,建议通过dependencyManagement锁定版本,避免冲突。


方案二:降级PowerMock适配现有Mockito版本

如果不想改动现有基于Mockito 1.x的测试代码,可以降级PowerMock到支持Mockito 1.x的版本,使用powermock-api-mockito(而非mockito2),推荐版本为1.7.4(完美兼容Mockito 1.10.19)。

调整后的POM依赖如下:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.10.19</version>
    <scope>test</scope>
</dependency>

<!-- 降级PowerMock到1.7.4,适配Mockito 1.x -->
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-testng</artifactId>
    <version>1.7.4</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.7.4</version>
    <scope>test</scope>
</dependency>

<!-- 替换为支持Mockito 1.x的API依赖 -->
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.7.4</version>
    <scope>test</scope>
</dependency>

注意:你同时引入了TestNG和JUnit4的PowerMock模块,实际只需要保留项目使用的测试框架对应的模块即可,避免冗余依赖。


内容的提问来源于stack exchange,提问作者TechGoose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 22:40:56