美文网首页
Mockito模拟final类和方法

Mockito模拟final类和方法

作者: 一路花开_8fab | 来源:发表于2019-04-15 17:37 被阅读0次

该系列文章翻译自https://www.baeldung.com/mockito-series

我们为MyList类增加了一个final方法,并且扩展了一个final类,如下:

public class MyList extends AbstractList {
    final public int finalMethod() {
        return 0;
    }
}
public final class FinalList extends MyList {
 
    @Override
    public int size() {
        return 1;
    }
}

1. 配置

为了让Mockito能够模拟final类和方法,需要做额外的配置。我们需要在项目的src/test/resources/mockito-extensions 目录下添加文件org.mockito.plugins.MockMaker,并在文件中添加一行

mock-maker-inline
image.png

2. 模拟final方法

@Test
public void whenMockFinalMethodMockWorks() {
 
    MyList myList = new MyList();
 
    MyList mock = mock(MyList.class);
    when(mock.finalMethod()).thenReturn(1);
 
    assertNotEquals(mock.finalMethod(), myList.finalMethod());
}

3. 模拟final类

@Test
public void whenMockFinalClassMockWorks() {
 
    FinalList finalList = new FinalList();
 
    FinalList mock = mock(FinalList.class);
    when(mock.size()).thenReturn(2);
 
    assertNotEquals(mock.size(), finalList.size());
}

相关文章

  • Mockito模拟final类和方法

    该系列文章翻译自https://www.baeldung.com/mockito-series 我们为MyList...

  • 使用Mockito mock final方法和final类

    代码已经上传到gitee[https://gitee.com/shoothzj/mockito-examples]...

  • PowerMock简介

    PowerMock扩展自Mockito,通过Java反射机制解决Mockito的一些问题,比如:在模拟final,...

  • 使用Powermock模拟final类或方法

      对于使用final修饰符修饰的类或方法,都是不能被继承的,Mockito也不支持mock带final修饰符的类...

  • Java基础——final 一成不变不可变?

    final可以修饰类,方法,变量。 一、final和类 final修饰类不可以被继承。 final 类的 方法 自...

  • final关键字

    final可以修饰类、方法、属性和变量final修饰类,则该类不能被继承final修饰方法,方法不能被重写fina...

  • final方法和final类

    使用final方法的原因:1.把方法锁定,以防止任何继承类修改它的含义;2.效率,内嵌调用,减少方法调用的开销,但...

  • Android单元测试之PowerMockito

    背景 由于Mockito的局限性,对final、private、static等方法不能mock,PowerMock...

  • 单元测试如何Mock final类

    在Mockito的旧版本中,是无法mock被final修饰的类或者方法的。强行mock会报如下错误: 在新版本中M...

  • final关键字

    final可以修饰类,方法,属性和变量 final修饰类,则该类不允许被继承 final修饰方法,则该方法不允许被...

网友评论

      本文标题:Mockito模拟final类和方法

      本文链接:https://www.haomeiwen.com/subject/orrpwqtx.html