zoukankan      html  css  js  c++  java
  • Mockito不能mock final类的解决办法

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

    Mockito cannot mock/spy because : - final class

    问题重现:

    引入该依赖到项目的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());
        }
    }
    

    报错信息如下:

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

    这是因为低版本的mockito是不能mock final类的。

    解决方案:

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

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

    重跑测试,问题解决!


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

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

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

  • 相关阅读:
    oracle mybatis 模糊查询
    IntelliJ IDEA各种引入jar包的方式及其关系
    eclipse中新建Java工程的三个JRE选项区别
    @Autowired注解和@resource注解的区别
    结合测试,黑盒测试
    Oracle左连接、右连接、全外连接以及(+)号用法
    samePropertyValuesAs()
    Collection.sort 的用法
    junit withcapture
    单元测试
  • 原文地址:https://www.cnblogs.com/larrydpk/p/12902949.html
Copyright © 2011-2022 走看看