Mockito 5 默认支持模拟构造函数、静态方法和最终类

Mockito 5.0.0 发布总结

Mockito,一个用于Java单元测试的模拟框架,近期发布了5.0.0版本。此次更新带来了多项重要改进和新特性,以下是主要内容和关键信息的总结:

主要更新

  1. 默认MockMaker切换为mockito-inline
    Mockito 5.0.0将默认的MockMaker接口切换为mockito-inline,以更好地支持未来版本的JDK。这一变化使得Mockito能够直接支持构造函数、静态方法和final类的模拟,而无需额外配置。
  2. JDK基线升级至Java 11
    由于同时支持Java 8和Java 11的成本较高,且JDK中的某些变化(如SecurityManager)难以管理,Mockito 5.0.0将基线从Java 8提升至Java 11。
  3. final类、静态方法和构造函数的支持
    在之前的版本中,Mockito默认不支持对final类的模拟,需要通过添加mockito-inline依赖来实现。从5.0.0开始,mockito-inline成为默认选项,直接支持这些功能。对于Graal VM原生镜像,仍可通过mockito-subclass依赖使用子类MockMaker

新特性

  1. ArgumentMatcher支持varargs
    ArgumentMatcher接口现在支持可变参数(varargs),特别是针对单个参数的匹配。例如,可以通过any()方法精确匹配一个varargs参数,而不会像之前版本那样匹配任意数量的参数。

    • 匹配一个varargs参数:

      when(mockedAnswer.count(any())).thenReturn(2);
    • 匹配任意数量的varargs参数:

      when(mockedAnswer.count(any(String[].class))).thenReturn(2);

依赖配置

  • Maven依赖

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>5.0.0</version>
        <scope>test</scope>
    </dependency>
  • Gradle依赖

    testImplementation 'org.mockito:mockito-core:5.0.0'

其他信息

更多关于Mockito 5.0.0的详细信息,可以参考GitHub上的发布说明。此次更新旨在提升框架的兼容性和功能性,同时简化开发者的使用体验。

阅读 32
0 条评论