Mockito不能mock final类的解决办法

Mockito是很经常使用的测试工具,使用过程当中可能会遇到下面的问题:java

Mockito cannot mock/spy because : - final class微信

问题重现:maven

引入该依赖到项目的maven配置以下:工具

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-core</artifactId>
  <version>3.3.3</version>
</dependency>

测试代码以下:测试

package com.pkslow.basic;

import org.junit.Assert;
import org.junit.Test;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class MockitoTest {

    public static final class FinalPumpkin {
        public String getName() {
            return "pkslow.com";
        }

    }

    @Test
    public void test() {
        FinalPumpkin pumpkin = mock(FinalPumpkin.class);
        when(pumpkin.getName()).thenReturn("www.pkslow.com");
        Assert.assertEquals("www.pkslow.com", pumpkin.getName());
    }
}

报错信息以下:spa

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class com.pkslow.basic.MockitoTest$FinalPumpkin
Mockito cannot mock/spy because :
 - final class

这是由于低版本的mockito是不能mock final类的。code

解决方案:xml

改变mockito的版本,修改maven依赖以下:get

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-inline</artifactId>
  <version>3.3.3</version>
</dependency>

重跑测试,问题解决!it


欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!

欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写做,多整理。

相关文章
相关标签/搜索